hadoop学习
Hadoop整体
什么是hadoop/hadoop定义/怎么理解hadoop?
- Hadoop(本身)是一个能够对海量数据进行分布式处理的框架,主要包括三个部分,HDFS,MapReduce,YARN,其中HDFS为海量数据提供了存储,MR是海量数据的计算框架,YARN提供资源管理和调度分配。
- Hadoop(广义)上指的是Hadoop生态圈,以Hadoop为平台的各种应用框架、大数据技术相关的开源组件或产品,如Hive,Spark,Zookeeper等
Hadoop中的几个进程和作用
- NameNode:它是Hadoop中的主服务器,管理HDFS的名称空间;管理数据块(Block)映射信息;配置副本策略;处理客户端Client读写请求。
- SecondaryNameNode:它不是NameNode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。
- DataNode存储实际的数据块;执行数据块的读/写操作。
- ResourceManager(JobTracker)负责调度DataNode上的工作。
- NodeManager(TaskTracker)执行任务
- DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把健康状态信息写入ZK。FC也有选择谁作为Active NN的权利。
- JournalNode 两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信,高可用情况下存放NameNode的editslog文件。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控editlog的变化,把变化应用于自己的命名空间。
Hadoop的作业提交流程
- 作业提交
Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。
Client向ResourceManager申请一个作业id。
RM给Client返回资源提交的路径和作业id。
Client将jar包,切片信息,xml配置文件提交到指定路径。
Client提交完成后向MR申请运行mrApplicationMaster。 - 作业初始化
RM收到Client的请求以后,将job转换成一个Task,提交到任务队列中。
某一个空闲的NodeManager领取该job。
NM创建Container,申请运行mrApp。
NM下载Client提交的资源。 - 任务分配
mrApp向RM请求运行多个MapTask任务。
RM将mrApp提交的任务分配给多个NM,NM分别启动MapTask。
MapTask运行完毕以后,mrApp向RM请求运行ReduceTask。
RduceTask从MapTask获取相应的分区数据。
程序运行完毕以后,MR向RM注销自己。
Hadoop1.0,2.0,3.0的区别
- Hadoop1.0由分布式存储系统HDFS和分布式计算框架MR组成,其中HDFS由一个NameNode和多个DataNode组成,MR由一个JobTracker和多个TaskTracker组成,因此在1.0中容易导致单点故障,拓展性差,性能差,支持编程模式单一的问题。
- Hadoop2.0可服了1.0的不足,增加了以下关键特性
(1)引入了全的通用资源管理系统YARN替代了1.0中的JobTracker,其资源管理和作业追踪的功能被抽象为ResourceManager和AppMaster两个组件,YARN还支持多种应用程序和框架,提供统一的资源调度和管理功能。
(2)2.0解决了NameNode单点故障和内存受限的问题,提供了NFS,QJM和Zookeeper三种可选的共享存储系统
(3)提供了HDFS快照,防止数据误删、丢失
(4)从2.2.0版本开始支持windows操作系统
(5)引入了文件追加操作Append
(6)针对HDFS,支持异构的存储层次
(7)针对HDFS,通过数据节点为存储在HDFS中的数据提供内存缓冲功能
(8)1.0默认块的大小为64M,2.0为128M - Hadoop3.0是直接基于JDK1.8发布的一个新版本,引入了以下关键特性
(1)HDFS可擦除编码(纠删码ES),相较于默认的三副本机制,节省了约50%存储空间
(2)增加了多NameNode支持,即支持一个ActiveNameNode和多个StandbyNameNode的部署方式
(3)MR native Task优化,添加了map输出collector的本地实现
(4)MR内存参数自动推断
(5)YARN基于cgroup的内存和磁盘IO隔离
(6)YARN container resizing
(7)磁盘平衡器,支持单个DN上不同硬盘之间的数据balancer
怎么处理Hadoop宕机问题
- 首先判断是什么问题导致了宕机
- 如果是MR造成,此时需要控制YARN同时运行的任务数,和每个任务申请的最大内存,调整参数
- 如果是NameNode宕机,可能是写入文件过量造成,此时需要调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。
Hadoop HA高可用
- HDFS-HA:
(1)在启动NN之前,需要启动(QJM)Quorum Journal Manager,QJM主要用来管理NN之间的数据同步,当active NN数据更新时会传递给QJM,QJM在所有的NN之间同步,最后QJM将active NN 更新的数据同步到了standby NN中。
(2)启动多个NN时,并配置NN的主机地址,还要配置隔离机制,防止出现多台active的设备,容易抢占资源等。
(3)引入zookeeper来对NN进行监听,当activeNN崩溃的话,zookeeper监听到后马上通知zookeeper的leader进行主备选举,在standbyNN中选举出一台,并将它置为active模式替换崩溃的NN。 - YARN-HA:
(1)通过在yarn-site.xml中配置对zookeeper支持。
(2)启动其他的ResourceManager后,都会在standby状态。
(3)当active ResourceManager 意外停止时,zookeeper就会选举出一个standby 状态的ResourceManager,然后将原来ResourceManager的状态信息写入到standby ResourceManager中,最后将standby ResourceManager置为active状态,完成了主备切换。
Hadoop中的安全模式是什么?
在安全模式下,HDFS群集变为只读。文件系统中不允许修改、删除或复制任何数据块。
Hadoop的基准测试
A:搭建完Hadoop集群后需要对HDFS读写性能和MR计算能力测试,测试jar包在Hadoop的share文件夹下,如计算pi值