hadoop 学习日记(初探)

# Java 环境

yum install java java-devel
vim ~/.bashrc # 配置JAVA_HOME和hadoop中的bin环境变量
source ~/.bashrc
1
2
3

# SSH 无密码登陆

可参考我另一篇博文。保证个节点机器是可以免密互通的。

# 配置 hadoop

这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

# 修改 slaves

192.168.0.121
192.168.0.113
192.168.0.238
1
2
3

# 修改 core-site.xml

<configuration>
  <property>
                <name>fs.defaultFS</name>
                <value>hdfs://192.168.0.121:9000</value>
                <!-- 指向Master -->
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/root/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12

# 修改 hdfs-site.xml

<configuration>
        <property>
                <name>dfs.http.address</name>
                <value>192.168.0.121:9870</value>
        </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>192.168.0.121:50090</value>
        </property>
        <property>
                <!-- 副本数量 -->
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/root/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/root/hadoop/tmp/dfs/data</value>
        </property>
        <property>
                <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
                <value>false</value>
        </property>
</configuration>
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
26
27

# 修改 mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>192.168.0.121:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>192.168.0.121:19888</value>
        </property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

修改 yarn-site.xml

<configuration>
        <!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>192.168.0.121</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11

将 Master 上的 hadoop 文件夹复制到各个节点上。

关闭防火墙(centos7)

systemctl stop firewalld.service    # 关闭firewall
systemctl disable firewalld.service # 禁止firewall开机启动
1
2
hdfs namenode -format    # 首次运行需要执行初始化,之后不需要
1

接着可以启动 hadoop 了,启动需要在 Master 节点上进行:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
1
2
3

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程。

还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。

所以如果集群以前能启动,但后来启动不了,特别是 DataNode 无法启动,不妨试着删除所有节点(包括 Slave 节点)上的 /usr/local/hadoop/tmp 文件夹,再重新执行一次 hdfs namenode -format,再次启动试试。