0%

完全分布式集群搭建

集群分发脚本

  • 放在 ~/bin/ 下,注意需要配置可执行权限
  • for 循环中配置节点主机名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=11; host<=13; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

集群配置

  1. 集群部署规划
    • 这里注意 NameNode、SecondaryNameNode、ResourceManager 应分别放在不同服务器上
hadoop11 hadoop12 hadoop13
HDFS NameNode
DataNode
DataNode SecondaryNameNode
DataNode
YARN NodeManager ResourceManager
NodeManager
NodeManager
JobHistoryServer
  1. 集群配置:(注意这里添改的配置信息均继承自 hadoop 快速入门指南一文)

    • core-site.xml 将 hdfs 配置在 hadoop11(NameNode 节点)上

      1
      2
      3
      4
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://hadoop11:9000</value>
      </property>
    • hdfs-site.xml 指定 hadoop 辅助节点 (SecondaryNameNode 节点)

      1
      2
      3
      4
      <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop13:50090</value>
      </property>
    • yarn-site.xml 指定 YARN 的 ResourceManager 的地址

      1
      2
      3
      4
      <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>hadoop12</value>
      </property>
    • works 配置工作节点

      1
      2
      3
      hadoop11
      hadoop12
      hadoop13
    • 文末给出本教程打包配置文件

  2. 配置 SSH 免密:

    • ssh 文件夹下(~/.ssh)的文件功能解释
known_hosts 记录 ssh 访问过计算机的公钥 (public key)
id_rsa 生成的私钥
id_rsa.pub 生成的公钥
authorized_keys 存放授权过得无密登录服务器公钥

生成并发送密钥

先把所有主机 ~/.ssh/ 下的文件都删掉,因为单节点当时配置过,当时只是为了能跑

1
2
3
4
[hadoop@hadoop11 hadoop]$ ssh-keygen -t rsa
[hadoop@hadoop11 hadoop]$ ssh-copy-id hadoop11
[hadoop@hadoop11 hadoop]$ ssh-copy-id hadoop12
[hadoop@hadoop11 hadoop]$ ssh-copy-id hadoop13

集群启动

  1. 第一次启动 (不是第一次集群启动就跳过):

    • 一定先停止所有的 Namenode 和 Datanode 服务 (JPS 查看,小心运行在 root 用户上)

    • 如果有,删除所有集群上 data 与 log 下的文件

    • 格式化 NameNodehdfs namenode -format

  2. HDFS 启动:hadoop11 下执行 start-dfs.sh

  3. Yarn 启动:hadoop12 下执行 start-yarn.sh

  4. JobHistoryServer:hadoop13 下执行 mapred --daemon start historyserver

至此,启动完毕,这里给出启动完成后各主机 JPS 进程情况

hadoop11 hadoop12 hadoop13
JPS 3684 Jps
3141 DataNode
3019 NameNode
3452 NodeManager
2900 ResourceManager
2727 DataNode
3031 NodeManager
3448 Jps
2305 NodeManager
2100 DataNode
2184 SecondaryNameNode
2906 JobHistoryServer
3340 Jps

集群可用性检查

  • http://hadoop11:9870/ 跳转至 NameNode 管理页
  • http://hadoop12:8088/cluster 跳转至 ResourceManager 管理页
  • http://hadoop13:19888/ 跳转至 JobHistory 管理页
  • $ hdfs dfs -put 本地路径 hdfs路径上传一些测试文件,建议一大 (>128MB) 一小
  • 在 9870 下查看文件储存情况,查看下 Block 分块情况
  • 还可以跑下 wordcount~

关闭集群

  1. 关闭 jobHistoryServer:hadoop13 下 mapred --daemon stop historyserver

  2. 关闭 yarn:hadoop12 下 stop-yarn.sh

  3. 关闭 hdfs:hadoop11 下 1stop-dfs.sh

配置文件

这里给出一台虚拟机,从刚克隆到集群中配置过的各个文件

AllConfig.7z 如果有遗漏或是下载不了,可以下方留言给,第一时间就会更新~