Hadoop集群启动的进程及其作用
问题分析
本题主要查看对hadoop环境组件的熟悉程度,搭建过hadoop环境的应该都能够讲出来。
核心问题回答
- NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。
- SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。
- DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程。
- ResourceManager(JobTracker)JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。
- NodeManager(TaskTracker)执行任务
- DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
- JournalNode 高可用情况下存放namenode的editlog文件
问题扩展
要熟悉各进程的启动步骤
(1)启动Zookeeper
已经设置自启动
vim /etc/rc.d/rc.local
在vim中新增两行:
export JAVA_HOME=/usr/local/src/java/jdk1.7.0_71
#export JAVA_HOME=/export/servers/jdk1.8.0_141
/soft/zookeeper-3.4.6/bin/zkServer.sh start
(2)启动hadooop集群
start-all.sh (start-dfs.sh start-yarn.sh)
(3)针对单个节点异常的补充启动
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
(4)检查集群 jps
(5)停止集群
sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/mr-jobhistory-daemon.sh stop historyserver