hadoop是什么
Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。
主要解决,海量数据的存储和海量数据的分析计算问题。
广义上来说,Hadoop 通常是指一个更广泛的概念 —— Hadoop 生态圈。
Hadoop 1.x 和 hadoop 2.x 的区别
在 Hadoop 1.x 时代,Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源调度,耦合性较大。
在 Hadoop 2.x 时代,增加了 Yarn。Yarn 只负责资源的调度,MapReduce 只负责运算。
HDFS
① NameNode(nn): 存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块所在的 DataNode 等。
② DataNode(dn): 在本地文件系统存储文件块数据,以及块数据校验和。
③ Secondary DataNode(2nn): 用来监控 HDFS 状态的辅助后台程序,每隔一段时间获取 HDFS 元数据的快照。
HDFS读文件
客户端向NameNode发送读取请求
NameNode返回文件的所有block和这些block所在的DataNodes(包括复制节点)
客户端直接从DataNode中读取数据,如果该DataNode读取失败(DataNode失效或校验码不对),则从复制节点中读取(如果读取的数据就在本机,则直接读取,否则通过网络读取)
Yarn
MapReduce
MapReduce 将计算过程分为两个阶段:Map 阶段和 Reduce 阶段。
① Map 阶段并行处理输入的数据。
② Reduce 阶段对 Map 结果进行汇总。