作为hadoop框架的开篇之作,我们试图用最简洁易懂的语言去介绍hadoop常见的家族成员的产生的背景及应用的场景。后续会针对性对各成员的原理机制进行详细介绍。hadoop家族成员概貌如下图:
下文将对hadoop常用家族成员进行简单介绍。
1、hadoop经历了从hadoop1.x到hadoop2.x的飞跃,hadoop1.x的出现填补了大数据处理市场的空白,使得对TB、PB甚至EB级别数据的处理成为可能。hadoop1.x由两部分组成,即HDFS和MapReduce,HDFS作为分布式文件系统,专门用来存储大量的数据。MapReduce作为分布式计算框架,对分布式存储的数据进行分布式的迭代处理和分析。hadoop2.x由三部分组成,即HDFS、Yarn和MapReduce,其中Yarn的出现使得Hadoop框架有了质的飞跃,作为资源调度器,Yarn能够高效的利用资源,并且也能将Spark、Storm等计算框架运行在Hadoop集群上,在后续会详细的介绍Yarn。
2、Hive,作为运行在hadoop之上的数据仓库,可以将HDFS上存储的数据,映射成一张表格,并且基于MR计算框架进行数据的分析。由于Hive将查询映射成MR进行计算,所以查询的实时性不强,后续笔者将详细介绍Spark on Hive,以及impala对Hive查询引擎所做的优化。
3、Hbase,作为Google Bigtable 的开源实现,是一种构建在HDFS之上的分布式、面向列的数据库,作为Key-Value数据库,Hbase通过行健、列族、列和时间戳定位到数据,在后续笔者将对Hbase的框架和原理进行详细分析。
4、Kafka,作为高吞吐量的分布式发布-订阅消息系统,在流处理领域中得到了广泛的应用,一般作为流处理的数据源。后续笔者将会详细介绍kafka的原理,以及kafka在电信领域流处理过程中的应用。
5、Flume,作为分布式的日志收集系统,主要分为Source,Channel,Sink三部分,如下图所示:
Source负责从数据源采集数据,数据源可以是文件系统,也可以是Kafka等消息系统;Channel作为数据传输的通道将数据源采集的数据通过Sink发送给数据接受地。Sink作为数据的输出端,通过指定不同类型的Sink将数据进行存储,常用的Sink有hdfs,kafka,ES等,后续笔者将针对Flume的不同应用进行详细举例。
6、Kudu,作为Hadoop家族的比较新的成员,作为对分布式列数据库的补充,同时又支持列的扩展和SQL查询,后续会对Kudu的安装和使用进行详细介绍。
7、Zookeeper,作为Hadoop家族的分布式协作服务,几乎到处都可以看到Zookeeper的身影,Hadoop2.x通过zookeeper来克服单点故障;Kafka通过Zookeeper来进行崩溃检测,实现topic的发现,并保持topic的生产和消费状态;Hbase通过Zookeeper选举集群主节点,并保存元数据,等等其他分布式系统中会经常看到Zookeeper的身影,笔者认为Yarn和Zookeeper在新一代的大数据工具扮演着至关重要的角色,后续会深入的分析Zookeeper的源码、原理。
关注是一种态度,分享是一种美德。本公众号每周都会进行更新,如有疑问,欢迎交流。
领取专属 10元无门槛券
私享最新 技术干货