hadoop集群搭建

hadoop集群搭建

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

基本思路:

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

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

  • 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,三个节点上环境和安装目录需一致

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

开始搭建

第一步

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

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

第二步

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

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免登录

通过namenode自动启动datanote,所以要配置namenode通过ssh连接datanode不需要密码,如果namenode节点同时担任一个datanode节点,那么也要配置namenode在ssh自己的时候也要免密码登录

# 一路回车
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):
...

查看进程

# 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节点上执行

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

参考文献:

    原文作者:MapReduce
    原文地址: https://segmentfault.com/a/1190000012575099
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞