hadoop技术探索之一
接触hadoop技术近两年,因hadoop技术栈庞大而复杂,故而想整理一些知识供日后使用。
一、什么是hadoop?
hadoop是apache开源的一款可靠的、可扩展的软件系统,提供分布式计算。用户不必了解hadoop底层基础,就可以利用hadoop实现分布式开发,从而充分利用计算机资源。
hadoop软件库是一个框架,它允许使用简单的编程模型,在计算机集群上对大型数据集进行分布式处理。它被设计成可以从单一服务扩展成拥有数千台机器的集群,每台机器都提供自己的计算和存储能力。它不是依靠硬件来提供高可用,而是被设计成检查和处理应用层故障,以此实现在计算机集群上提供高可用,而其中每台计算机都有可能出现故障。
二、hadoop起源
hadoop源于google公布的三篇论文,即GFS、Mapreduce、BigTable,hadoop技术创始人Doug Cutting等人受到这三篇论文启发,进而开发出DFS、hadoop MapReduce。开始hadoop作为apache nutch项目的一部分,后来独立出来,逐渐发展成为如今这么庞大的技术群体。
三、核心组件
hadoop技术包括以下几个核心部件:
hadoop-common:为其它hadoop模块提供通用的工具集。
hadoop distributed file system(HDFS):分布式文件系统,提供高吞吐量访问应用数据。
hadoop yarn:作业调度及hadoop集群资源管理框架。
hadoop mapreduce:一个基于yarn的并行处理大型数据集的系统。
四、其它关联项目
Alluxio:一个基于内存的分布式文件系统,介于传统的底层分布式文件系统和上层计算框架之间。
Ambari:一个管理、监控hadoop集群的web工具。可以提供应用部署、配置管理、状态监控、指标展示等功能。
Avro:一种数据序列化系统。
Cassandra:一个多主机数据库,没有单一几点故障。
Chukwa:大型分布式系统的数据采集系统。
Flume:一款高可用的、可靠的海量数据采集、聚合、传输系统。
haproxy:基于tcp及http的反向代理服务,多用于master的负载均衡。
HBase:一个可扩展的分布式数据库。
Hive:数据仓库基础部件。
Hue:一个开源的查询web工具,用于浏览、可视化、和查询数据,重点是sql和搜索。
Impala:为存储在hadoop集群上的PT级的数据提供快速的、分布式的sql查询。它是一个现代的、大规模分布的、大规模并行的、C++的查询引擎,它能够让你对各种各样的数据源进行分析、转换和合并数据。
Kafka:kafka被用于构建实时的数据管道和数据流应用。它是可横向扩展的、可容错的、快速的,能够运行在上千台计算机的生产环境中。
knox:是apache hadoop生态圈的rest api及应用网关。为hadoop集群所有的rest及http交互提供单一的入口。提供了代理服务、认证服务、客户端服务。
kylin:分布式的分析引擎,提供hadoop之上的sql查询及多维分析能力。
Mahout:一个可扩展的机器学习及数据挖掘库。
Pig:一个用于并行计算的高级数据流语言和执行框架。
sentry:sentry是一个对hadoop集群上的数据及元数据进行细粒度的角色授权的系统服务。
slider:slider是用于在yarn集群上部署分布式应用,监控这些应用,并使它们按照预期变大或变小,即使是这些应用还在运行过程中。
Spark:一个快速的通用的hadoop数据计算引擎。提供简单而有表现力的编程模型,具有广泛的应用,包括ETL、机器学习、流处理和图计算。
Tez:一款基于hadoop yarn的通用的数据流处理引擎。它为任意的DAG任务提供强大的零活的执行引擎,包括批处理和交互式处理任务。Tez被Hive、Pig及hadoop生态圈中其它框架、甚至一些商业软件(例如一些ETL工具)引用,用来替代hadoop的MapReduce作为线下执行引擎。
Zookeeper:一个高性能的分布式应用协同服务。
五、hadoop生态系统
六、jdk版本依赖
hadoop2.7.x版本依赖jdk7以上,包括openJDK及Oracle java。hadoop2.6.x及以前的版本依赖于jdk6。hadoop3.0版本依赖于jdk8。
七、流行发行版本
目前使用的hadoop版本,基本上有三种,即apache发行版本的hadoop,CDH版本的hadoop及HDP版本的hadoop。