大数据技术栈详解

一.技术栈结构

大数据技术栈

二.Hadoop

1.广义Hadoop

Hadoop在广义上来说是Hadoop生态圈,包含大量用于大数据存储,管理,传输,分析计算的框架.

框架描述如下图:

15883010-44e5e07f7bf214f2

2.狭义Hadoop

狭义上的Hadoop是一个Apache下开源的分布式系统基础框架,主要解决海量数据的存储和分析计算问题.

Hadoop的组成:

Hadoop

2.1.HDFS

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统的区别也是很明显的.

HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用.HDFS放宽了(relax)POSIX(可移植操作系统接口 Portable Operating System Interface of UNIX)的要求,可以以流的形式访问(Streaming access)文件系统中的数据.

HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的,是Apache Hadoop Core项目的一部分.HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有这超大数据集(large data set)的应用程序.

2.2.MapReduce

MapReduce是一种编程模型,其理论来自Google公司发表的三篇论文(MapReduce,BigTable,GFS)之一,主要应用于海量数据的并行计算.

MapReduce可以分成MapReduce两部分理解.

Map:映射过程,把一组数据按照某种Map函数映射成新的数据.

Reduce:归约过程,把若干组映射结果进行汇总并输出.

Hadoop实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行.

MapReduce是Hadoop中的一个数据运算核心模块,MapReduce通过JobClient生成任务运行文件,并在JobTracker进行调度指派TaskTracker完成任务.

0b55b319ebc4b745ba5d74f7c1fc1e178b821502

2.3.Yarn

YARN是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序.

YARN是Hadoop2.x版本中的一个新特性.它的出现其实是为了解决第一代MapReduce编程框架的不足,提高集群环境下的资源利用率,这些资源包括内存,磁盘,网络,IO等.Hadoop2.X 版本中重新设计的这个YARN集群,具有更好的扩展性,可用性,可靠性,向后兼容性,以 及能支持除MapReduce以外的更多分布式计算程序.

Yarn的特点

1.Yarn并不清楚用户提交的程序的运行机制.

2.Yarn只提供运算资源的调度(用户程序向Yarn申请资源,Yarn就负责分配资源).

3.Yarn中的主管角色叫ResourceManager.

4.Yarn中具体提供运算资源的角色叫NodeManager.

5.这样一来,Yarn其实就与运行的用户程序完全解耦,就意味着Yarn上可以运行各种类型的分布式运算程序(MapReduce只是其中的一种),比如MapReduce,Storm程序,Spark程序,Tez…

6.Spark,Storm,Flink等运算框架都可以整合在Yarn上运行,只要他们各自框架中有符合Yarn规范的资源请求机制即可.

7.Yarn就成为一个通用的资源调度平台,从此,企业中以前存在的各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享.

三.集群管理

1.Ambari集群管理工具

Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的创建,管理和监控.Ambari已支持大多数Hadoop组件,包括HDFS,MapReduce,Hive,Pig, Hbase,Zookeeper,Sqoop和Hcatalog等.用一句话来说,Ambari就是为了让Hadoop以及相关的大数据软件更容易使用的一个工具.

Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent.简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件:Agent会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护.

------------- 我是鲁边 peace and love -------------
END