1、编程语言
Java、Scala必备!
但是目前对于大部分程序员(特别是大数据程序员)来说,Python也是必须要掌握的一门技能了。如果已经会Java和Scala,那学Python也就是分分钟的事。
2、操作系统
Linux操作系统是必备的,虽然不需要像运维一样了解的太深入,但是一些常用的命令还是要会的。
3、数据采集
Flume是一个日志采集工具,必备!
4、数据传输
Kafka必备!它作为消息中间件,可以很好地解耦上下游关系,达到负载和提高消息可靠性的目的!
Sqoop必备!它可以通过简单的命令脚本就实现Hadoop(HDFS、Hive)平台的数据和关系型数据库(mysql、postgresql)之间的数据传输,比较简单!
5、数据存储
MySQL就不用说了,必备!
Redis也不用说了,必备!
Hive也是必备!
HBase作为列式存储的分布式数据库,必备!
学习能力强的话还可以学习一下MongoDB、Elasticsearch!
6、数据计算
Hadoop必备!严格来说Hadoop不应该放到数据计算这个分类里面,因为它当中的HDFS是负责存储的、Yarn是负责任务调度的、MapReduce才是负责计算的!
Spark必备!Spark可以做离线计算和流计算的框架!
Flink作为新起之秀,也是必备!相对于Spark来说,Flink做到了真正的流计算,而Spark的流计算说到底还是批处理!很多大厂都开始往Flink迁移了。
7、分布式服务协调以及任务调度
Zookeeper作为一个为分布式应用提供协调服务的组件,必备!
相对于前面的内容来说,任务调度算不上是重点,含金量没那么高,都比较简单。
Linux中的Crontab是必备的!还有像Azkaban、Oozie、Airflow等,不同公司的选择可能不一样。
8、版本控制
Git和SVN必备!
以上这些内容基本上是大数据里面最常用,也是最核心的内容了。除了这些之外还有一些其它的组件(如:Druid、Kylin、Presto、Impala、Hue、ClickHouse、Kettle等),不同公司的选择不一样,或者说看具体业务需求的选择吧!