hadoop集群搭建

hadoop集群搭建

这里的集群只是一个单点登陆的集群,没有作到正真的HA高可用,只是一个namenode节点多个datanode节点html

基本思路:

  1. 先在一个节点上配置好hadoop集群
  2. 将配置好的hadoop复制给其余的节点机
  3. 配置ssh免密码登陆(这里是为了第四步)
  4. namenode启动整个集群(经过ssh启动其余datanode节点)

我这里准备用三个节点机做演示,使用hadoop-2.9.0版本java

  • 10.100.101.127(namenode节点,resourceManager节点)
  • 10.100.102.127(datanode节点,nodeManager节点)
  • 10.100.103.127(datanode节点,nodeManager节点)

搭建前环境准备

hadoop是java语言写的,运行hadoop依赖jvm,须要先安装jdk,配置环境变量JAVA_HOME,三个节点上环境和安装目录需一致node

[root@localhost hadoop]# echo $JAVA_HOME
/data/software/jdk1.8.0_121

开始搭建

第一步

http://hadoop.apache.org/rele...,将安装包上传到10.100.101.127机器上,解压shell

# 使用secureCRT客户端工具上传
rz -bye
tar -zxvf hadoop-2.9.0.tar.gz

第二步

修改配置文件(6个),配置文件在$HADOOP_HOME/etc/hadoop/文件夹下apache

hadoop-env.sh

export JAVA_HOME=/data/software/jdk1.8.0_121

core-site.xml

```
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://172.18.113.120:9000</value>
    </property>
</configuration>
```

hdfs-site.xml

```
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
    <!-- 默认为true,经过主机名配置,若是是经过ip配置,这里须要配置false -->
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
    </property>
</configuration>
```

yarn-site.xml

```
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>10.100.101.127</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
```

mapred-site.xml

```
# 这个配置文件默认没有,可是有个模板能够参考
[root@localhost hadoop]# cp mapred-site.xml.template mapred-site.xml
```
```
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
```

slaves

这里配置的是datanode节点,一个节点占一行,hadoop将这个文件改为了`workers`

```
10.100.101.127
10.100.102.127
10.100.103.127
```

第三步

配置ssh免登陆ssh

经过namenode自动启动datanote,因此要配置namenode经过ssh链接datanode不须要密码,若是namenode节点同时担任一个datanode节点,那么也要配置namenode在ssh本身的时候也要免密码登陆jvm

# 一路回车
ssh-keygen
ssh-copy-id 10.100.102.127
ssh-copy-id 10.100.103.127
ssh-copy-id 10.100.101.127

第四步

复制文件给其余节点,启动集群工具

# 把配置好的hadoop给其余两个节点各复制一份,注意jdk环境要一致
scp -r hadoop-2.9.0 10.100.102.127:///home/
scp -r hadoop-2.9.0 10.100.103.127:///home/
# 首次启动须要先在 Master 节点执行 NameNode 的格式化,以后的启动不须要再去进行:
bin/hdfs namenode -format
# 启动dfs Default HTTP port is 50070
sbin/start-dfs.sh
# 启动yarn Default HTTP port is 8088
sbin/start-yarn.sh
# 启动jobhistory Default HTTP port is 19888.
sbin/mr-jobhistory-daemon.sh start historyserve
# 经过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动
bin/hdfs dfsadmin -report
...
Live datanodes (3):
...

查看进程oop

# namenode上的进程数10.100.101.127
# jps
24496 DataNode
25107 NodeManager
24358 NameNode
24998 ResourceManager
25494 JobHistoryServer
24679 SecondaryNameNode
25591 Jps
22442 Bootstrap

# datanode上的进程数10.100.102.127/10.100.103.127
# jps
24657 Jps
24338 DataNode
24518 NodeManager
23342 Bootstrap

关闭集群一样也是在Master节点上执行code

$stop-yarn.sh
$stop-dfs.sh
$mr-jobhistory-daemon.sh stop historyserver

参考文献: