Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务。
HDFS
Client
Client(代表用 户) 通过与 NameNode 和 DataNode 交互访问 HDFS 中 的文件。 Client 提供
了一个类似 POSIX 的文件系统接口供用户调用。
NameNode
整个 Hadoop 集群中只有一个 NameNode。 它是整个系统的“ 总管”, 负责管理 HDFS 的目
录树和相关的文件元数据信息。 这些信息是以“ fsimage”( HDFS 元数据镜像文件)和
“ editlog”(HDFS 文件改动日志)两个文件形式存放在本地磁盘,当 HDFS 重启时重新构造出
来的。此外, NameNode 还负责监控各个 DataNode 的健康状态, 一旦发现某个 DataNode 宕
掉,则将该 DataNode 移出 HDFS 并重新备份其上面的数据。
Secondary NameNode
Secondary NameNode 最重要的任务并不是为 NameNode 元数据进行热备份, 而是定期合并
fsimage 和 edits 日志, 并传输给 NameNode。 这里需要注意的是,为了减小 NameNode 压
力, NameNode 自己并不会合并 fsimage 和 edits, 并将文件存储到磁盘上, 而是交由
Secondary NameNode 完成。
DataNode
一般而言, 每个 Slave 节点上安装一个 DataNode, 它负责实际的数据存储, 并将数据信息定期
汇报给 NameNode。 DataNode 以固定大小的 block 为基本单位组织文件内容, 默认情况下
block 大小为 64MB。 当用户上传一个大的文件到 HDFS 上时, 该文件会被切分成若干个 block,
分别存储到不同的 DataNode ; 同时,为了保证数据可靠, 会将同一个 block 以流水线方式写到
若干个(默认是 3,该参数可配置)不同的 DataNode 上。 这种文件切割后存储的过程是对用户
透明的
MapReduce
Client
用户编写的 MapReduce 程序通过 Client 提交到 JobTracker 端; 同时, 用户可通过 Client 提
供的一些接口查看作业运行状态。 在 Hadoop 内部用“作业”(Job) 表示 MapReduce 程序。
一个 MapReduce 程序可对应若干个作业,而每个作业会被分解成若干个 Map/Reduce 任务
(Task)。
JobTracker
JobTracker 主要负责资源监控和作业调度。JobTracker 监控所有 TaskTracker 与作业的健康状况,
一旦发现失败情况后,其会将相应的任务转移到其他节点;同时 JobTracker 会跟踪任务的执行进
度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合
适的任务使用这些资源。在 Hadoop 中,任务调度器是一个可插拔的模块,用户可以根据自己的
需要设计相应的调度器。
由于平台文章篇幅限制,细节内容过多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
小编这里有还一份大数据的学习文档可以免费分享给大家。其中包含:Zookeeper、spark、hadoop、hbase、RabbitMQ、Cassandra 分布式缓存、数据结构等等
资料免费获取方式:关注我 + 转发文章,后台私信【资料】即可免费获取
閱讀更多 大數據三十四號 的文章