hadoop -- 生态环境(ecosystem)


我们一路奋战,不是为了改变世界,而是为了不让世界改变我们 - 熔炉


参考翻译

https://www.edureka.co/blog/hadoop-ecosystem


生态环境


HDFS

HDFS 的全称为 Hadoop Distributed File System,即分布式文件系统,HDFS 是 Hadoop 的核心组件,其设计的本质是让大量不同类型的数据集存储在成千上万的机器上,但是 HDFS 会将这些数据集抽象成让你看起来就是同一个文件单元,也就是说,当你访问 HDFS 某目录下的某个文件时,其数据可能来自不同的地方

HDFS 有两个核心组件,NameNode 和 DataNode: 1. NameNode 以一种类似表的结构存储一种元数据(metedata)类型,,每条元数据记录描述了一个 dataNode 的相关信息 2. 另一方面来说,DataNode 就是存储真实数据的场所(分布式环境中普通的存储硬件),多个 dataNode 由一个 NameNode 存储信息

总的来说,我们操作数据总是与 NameNode 进行沟通,NameNode 会自动选择哪些 dataNode 进行数据的写入或者读取


YARN

类比 CPU 于计算机,YARN 是 hadoop 生态环境中资源分布和任务调度的角色扮演,YARN 只是任务调度的其中一种框架,它使 ecosystem 中的各个工具能够井然有序地在同一个集群环境中合作

同样,YARN 也有两个核心组件:ResourceManager 和 NodeManager 1. 相当于 NameNode,ResourceManager 任务调度中处于主控制程序的位置,其接受我们的请求再根据请求的情况分配到不同的NodeManager中,即真正执行任务(task)的地方 2. NodeManager 安装在每一个 DataNode 上,在这里执行相应的任务(task)

除此之外,ResourceManager 由两个组件构成:Schedulers 和 ApplicationsManager 1. Schedulers 会根据请求的情况,执行相应的调度算法和分配资源 2. ApplicationsManager 会根据所接受到的工作情况和环境情况来执行应用指定的 ApplicationMaster 和监控程序

While ApplicationsManager accepts the job submission, negotiates to containers (i.e. the Data node environment where process executes) for executing the application specific ApplicationMaster and monitoring the progress.


MAPREDUCE

可以简单地理解为,MapReduce 是 Hadoop 的中心思想,也是我们平时所接触的分而治之的分治法思想,hadoop 为什么能够同时处理不同 DataNode 中数据的原因就在于此


Pig

Pig 是一个使用类SQL语言 pig latin 和其运行环境 pig runtime 进行大数据处理分析的平台,其提供了比 Java 等语言更高层次的操作和编程接口


Hive

Hive 是类似 SQL 的数据仓库,一样可以对数据进行增删查改,区别在于 Hive 在 hadoop 集群环境下进行,这也为只会 SQL 的非程序员支持 Hadoop 的操作,facebook 很牛逼的说

同样,Hive 也有自己的 command line 以及供 Java 连接使用的 JDBC/ODBC driver

另外,Hive 还有高扩展性和伸缩性,对方法进行重写等操作


MAHOUT

MAHOUT 为机器学习提供了连接 Hadoop 的环境,使其更够在 hadoop 下建立可伸缩性的机器学习应用

对于机器学习来说,MAHOUT上可进行协同过滤(collaborative filtering),聚类(clustering )和分类(classification)的机器学习算法,或许还有个处于模糊边界的频繁项集(frequent item)


Spark

spark 是基于 scala 语言的框架平台,相对于 hadoop 更注重于存储, spark 天生就是为了实时处理大数据,而且还提供了更多的语言接口,除了原生语言之外,R, SQL, Python, Scala, Java 等都可以通过其进行大数据处理计算


HBASE

  • HBASE 是一个开源的非关系分布式数据库(NoSQL)
  • 支持各种类型的数据,这也是其能够在Hadoop ecosystem中能够处理一切
  • Hbase由java开发但能够通过 REST, Avro and Thrift 等 API 使用