hadoop发展到今天家族产品已经非常丰富,能够满足不同场景的大数据处理需求。作为目前主流的大数据处理技术,市场上很多公司的大数据业务都是基于hadoop开展,而且对很多场景已经具有非常成熟的解决方案。
作为开发人员掌握hadoop及其生态内框架的开发技术,就是进入大数据领域的必经之路。
下面详细介绍一下,学习hadoop开发技术的路线图。
hadoop本身是用java开发的,所以对java的支持性非常好,但也可以使用其他语言。
下面的技术路线侧重数据挖掘方向,因为python开发效率较高所以我们使用python来进行任务。
因为hadoop是运行在linux系统上的,所以还需要掌握linux的知识。
第一阶段:hadoop生态架构技术
1、语言基础
java:掌握javase知识,多理解和实践在java虚拟机的内存管理、以及多线程、线程池、设计模式、并行化就可以,不需要深入掌握。
linux:系统安装(命令行界面和图形界面)、基本命令、网络配置、vim编辑器、进程管理、shell脚本、虚拟机的菜单熟悉等等。
python:基础语法,数据结构,函数,条件判断,循环等基础知识。
2、环境准备
这里介绍在windows电脑搭建完全分布式,1主2从。
vmware虚拟机、linux系统(centos6.5)、hadoop安装包,这里准备好hadoop完全分布式集群环境。
3、mapreduce
mapreduce分布式离线计算框架,是hadoop核心编程模型。主要适用于大批量的集群任务,由于是批量执行,故时效性偏低。
4、hdfs1.0/2.0
hadoop分布式文件系统(hdfs)是一个高度容错性的系统,适合部署在廉价的机器上。hdfs能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
5、yarn(hadoop2.0)
前期了解即可,yarn是一个资源调度平台,主要负责给任务分配资源。yarn是一个公共的资源调度平台,所有满足条件的框架都可以使用yarn来进行资源调度。
6、hive
hive是一个数据仓库,所有的数据都是存储在hdfs上的。使用hive主要是写hql,非常类似于mysql数据库的sql。其实hive在执行hql,底层在执行的时候还是执行的mapredce程序。
7、spark
spark 是专为大规模数据处理而设计的快速通用的计算引擎,其是基于内存的迭代式计算。spark 保留了mapreduce 的优点,而且在时效性上有了很大提高。
8、spark streaming
spark streaming是实时处理框架,数据是一批一批的处理。
9、spark hive
基于spark的快速sql检索。spark作为hive的计算引擎,将hive的查询作为spark的任务提交到spark集群上进行计算,可以提高hive查询的性能。
10、storm
storm是一个实时计算框架,和mr的区别就是,mr是对离线的海量数据进行处理,而storm是对实时新增的每一条数据进行处理,是一条一条的处理,可以保证数据处理的时效性。
11、zookeeper
zookeeper是很多大数据框架的基础,它是集群的管理者。监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。
最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
12、hbase
hbase是一个nosql 数据库,是一个key-value类型的数据库,是高可靠、面向列的、可伸缩的、分布式的数据库。
适用于非结构化的数据存储,底层的数据存储在hdfs上。
13、kafka
kafka是一个消息中间件,在工作中常用于实时处理的场景中,作为一个中间缓冲层。
14、flume
flume是一个日志采集工具,常见的就是采集应用产生的日志文件中的数据,一般有两个流程。
一个是flume采集数据存储到kafka中,方便storm或者sparkstreaming进行实时处理。
另一个流程是flume采集的数据存储到hdfs上,为了后期使用hadoop或者spark进行离线处理。
第二阶段:数据挖掘算法
1、中文分词
开源分词库的离线和在线应用
2、自然语言处理
文本相关性算法
3、推荐算法
基于cb、cf,归一法,mahout应用。
4、分类算法
nb、svm
5、回归算法
lr、decision tree
6、聚类算法
层次聚类、kmeans
7、神经网络与深度学习
nn、tensorflow
以上就是学习hadoop开发的一个详细路线,鉴于篇幅原因只列举和解释了框架作用,如果需要了解具体框架的开发技术,可以百度搜索八斗hadoop大纲,详细了解。
学习完第一阶段的知识,已经可以从事大数据架构相关的工作,可以在企业中负责某些或某个的开发与维护工作。
学习完第二阶段的知识,可以从事数据挖掘相关的工作,这也是目前进入大数据行业含金量最高的工作。