Hadoop的搭建有三种方式,单机版适合开发调试;伪分布式版,适合模拟集群学习;完全分布式,生产使用的模式。这篇文件介绍如何搭建完全分布式的hadoop集群,两个master节点,三个worker节点为例来讲解。
部署前准备
- 节点详情:
IP | HostName | 角色分配 |
---|---|---|
10.250.76.175 | master-01 | QuorumPeerMain,DFSZKFailoverController,JobHistoryServer,NameNode1,Journalnode,ResourceManager1 |
10.250.76.176 | master-02 | QuorumPeerMain,DFSZKFailoverController,JobHistoryServer,NameNode2,Journalnode,ResourceManager2 |
10.250.76.179 | hadoop-0001 | QuorumPeerMain,DFSZKFailoverController,Journalnode,DataNode,NodeManager |
10.250.76.178 | hadoop-0002 | DataNode,NodeManager |
10.250.76.177 | hadoop-0003 | DataNode,NodeManager |
- 简单介绍下各个进程进程及其作用
进程 | 作用 |
---|---|
NameNode | 是hdfs的主服务器,管理文件系统的目录树以及对集群中存储文件的访问,保存有metadate信息,不断读取记录集群中dataNode主机状况和工作状态,可以理解为hdfs的大脑 |
SecondaryNameNode | NameNode的备用节点,负责周期性的合并fsimage以及edit logs,减少NameNode的工作量,主namenode节点异常后,备用节点会顶上 |
DataNode | 负责管理各个存储节点,每个存储数据的节点都有一个datanode守护进程,hdfs的工作节点 |
DFSZKFailoverController | 负责监控NameNode的状态,并及时把信息状态写入zk,通过一个独立的线程周期性的调用Namenode上的一个特定接口来获取NameNode的健康状态,也有选择谁为Active的权利,但是最多只能有两个namenode,所以选择策略为先到先得, 可以理解为故障切换的控制器 |
QuorumPeerMain | zookeeper的主进程 |
JournalNode | 高可用情况下用于存放namenode的editlog文件(元数据),也是多节点高可用 |
JobHistoryServer | 这是yarn提供的一个查看已经完成的任务的历史日志记录的服务,我们可以启动JobHistoryServer来观察已经完成的任务的所有详细日志信息,随RM变化 |
ResourceManager | 负责调度DataManager上的资源,每个DataNode都有一个NodeManager来执行实际工作,可以理解为yarn的大脑,与NamNode一样,主备双节点,互为冗余 |
NodeManager | 管理worker节点的资源,是实际工作的节点 |
- 进行部署:
- 在每个节点配置IP地址与主机名的映射关系(所有节点都需要)
[root@master-01 ~]# cat /etc/hosts
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
10.250.76.175 master-01
10.250.76.176 master-02
10.250.76.179 hadoop-0001
10.250.76.178 hadoop-0002
10.250.76.177 hadoop-0003
2.配置免密登陆 这一步需要在master1和master2两台节点分别执行。使master1 2 均能免密登陆worker其他任意节点
[root@master-01 ~]# ssh-keygen # 生产当前主机的公钥和私钥
[root@master-01 ~]# ssh-copy-id hadoop-0001 # 分发密钥
[root@master-01 ~]# ssh-copy-id hadoop-0002
[root@master-01 ~]# ssh-copy-id hadoop-0003
[root@master-01 ~]# ssh-copy-id master-01
[root@master-01 ~]# ssh-copy-id master-02
3.安装JDK (hadoop全家桶都是java写的,少了jdk怎么能行) 安装好jdk后,记得加入环境变量中
[root@master-01 ~]# yum -y install java-1.8.0-openjdk*
[root@master-01 ~]# cat /etc/profile
xxx...
xxx...
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOM