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 如果有遗漏或是下载不了,可以下方留言给,第一时间就会更新~