每个人心中都有一个Hadoop生态圈
说到现在什么技术最火,想必你一定会想到一个就是Hadoop,你可能经常听说,现在的人们生活在大数据时代,而Hadoop或多或少已经成了大数据的一个代名词。
从狭义上来说Hadoop是Apache旗下的一个开源软件平台,它不是像CRM\ERP这样的特定功能的软件,而是一个框架,它提供这样一种功能——利用服务器集群,根据用户自定义功能,对海量数据进行分布式处理,这是Hadoop本身的基本概念。
从广义上来讲,Hadoop已经指向一个更广泛的概念,即接下来要说的主题——HADOOP生态圈(Hadoop Ecosystem)。
从图上可以看出,hadoop生态圈中涉及很多技术,这些技术都是为了解决大数据处理过程中不断出现的新问题而产生的,那我们不妨从大数据的基本问题出发来认识一下这些看起来高大尚的产品技术。
大数据,从这个词本身就给出了它要解决的首要问题,庞大的数据、海量的数据,有了数据,首先要解决的一个问题就是存储,HDFS就这样出世了
HDFS:官方解释一下就是hadoop分布式文件系统,简单来说就是将文件分布的存储在多台机器上(也就是所谓的集群),再通过抽象,把这些机器看成一个逻辑整体,让外界(客户端)操作起来和单机访问没什么两样。(说起来简单,实现起来就涉及很多细节的技术,如文件分块,元数据管理等等,以后有机会再专题分享)
解决了数据存储,接下来理所当然就是数据处理了,文件已经分布存储,处理数据如果是单机运行显然不能满足要求,于是也就有了MapReduce(MR)
MapReduce:分布式运算程序开发框架,也就是通过高并发模式提高数据处理,如何进行,理念就是map阶段通过用户自定义程序并行对分布在集群中的文件实现<key,value>键值对的输出,再通过框架将map生成的同key的不同value的数据进行合并(官方将此过程叫shuffle),reduce阶段用户自定义reduce程序通过接收合并后的<key,values>(注意此时同key的value已经合并成一个集合了)进行业务逻辑处理,根据业务逻辑切分数据,可设置多个map与多个reduce同时跑,从而实现分布式运算处理
有了分布式运算,自然就能让人联想到接下来的一个问题,运行资源如何分配,如在哪些机器运行哪些map、reduce任务,任务运行状态如何监控,失败的任务处理等等,答案是:YARN
YARN:Yet Another Resource Negotiator,它是hadoop2.X版本以上一种新的资源管理器,它的核心作用是负责运行程序所需资源(如运算程序包,内存、IO、CPU等)的分配与回收,与应用程序本身的运算逻辑无关,因此可以说YARN不只是MR程序的资源管理器,而是一个通用的资源管理器
如果你以前从未了解过Hadoop,恭喜你到这里你已经对Hadoop有了初步认识。
HADOOP:(包含HDFS、MapReduce、YARN) 元老级大数据处理技术框架,擅长离线数据分析
随着hadoop的兴起,越来越多的组织开始对hadoop技术的不足进行优化补充,对于一些特定的需求进行定制开发,于是更多的优秀的技术横空出世。
HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具,即让用户可以以SQL方式实现MR程序,HIVE负责将SQL翻译为底层MR程序,减小写MR程序的工作量(当你熟悉了MR程序编写你就会发现,其实是一件很麻烦的事情)。
Pig:一种数据流语言和运行环境,用于检索非常大的数据集,与HIVE,Pig提供了一种近似脚本的方式实现MR程序,简化Hadoop的使用。
HBase:作为面向列的数据库运行在HDFS之上,HDFS缺乏随即读写操作,HBase正是为此而出现。HBase以Google BigTable为蓝本,以键值对的形式存储。
Sqoop: 数据导入导出工具
Flink:流式数据和批量数据的分布式处理引擎
SparkStreaming:大规模流式数据处理
Storm:流式处理框架、实时运算
Scribe:
Facebook开源的日志收集系统
Flume: 日志数据采集框架
Mahout: 基于mapreduce/spark/flink等分布式运算框架的机器学习算法库,协同过滤算法
Oozie:工作流调度框架
Avro: Hadoop中的子项目,基于二进制数据传输高性能的中间件,即序列化工具
Spark:专为大规模数据处理而设计的快速通用的计算引擎
Zookeeper:分布式协调服务,本身与是分布式,管理(存储,读取)用户程序提交的数据;并为用户程序提供数据节点监听服务。
这就是笔者目前所认识的hadoop生态圈,也就是一个不同场景,不同需求情况下处理大数据的”五花八门“的大数据处理“工具”的集合,目的是让大数据处理更加简便、更加高效,工具如此之多,全部精通不太现实,每个人心中都应该有自己的取舍,但对于基本的概念还是都应该有所了解,正所谓见多识广,相信随着时间的推移,更多更优秀的框架“工具”将会出现,所以请时刻保持学习的态度,这样你将来的大数据之路才会越走越远。