Mac单机安装Apache Hadoop

本文记录一下 Mac 本机安装 Hadoop 的过程,免得每次都要去搜索一堆博客才能安装成功。

环境

Mac:10.15.7
Hadoop:2.7.4
JDK:1.8.0_151

下载并解压

从官网下载解压到某个目录下,并在 /etc/profile 设置环境变量:

1
2
3
4
5
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/bin

使环境变量生效:

1
source /etc/profile

查看是否安装成功:

1
hadoop version

修改 Hadoop 配置

修改 hadoop-env.sh 文件

1
2
3
4
5
# 设置JAVA_HOME
export JAVA_HOME=$JAVA_HOME

# 设置 HADOOP 配置文件路径
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

修改 core-site.xml 文件

1
2
3
4
5
6
7
8
9
10
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>

<!-- 指定 hadoop 运行时产生文件的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/current/tmp</value>
</property>

修改 hdfs-site.xml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<!--不是root用户也可以写文件到hdfs-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value> <!--关闭防火墙-->
</property>

<!--把路径换成本地的name所在位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/current/dfs/name</value>
</property>

<!--在本地新建一个存放hadoop数据的文件夹,然后将路径在这里配置一下-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/current/dfs/data</value>
</property>

修改 mapred-site.xml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 指定 mapreduce 运行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>localhost:50030</value>
</property>
<property>
<name>mapreduce.jobhisotry.address</name>
<value>localhost:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>

修改 yarn-site.xml 文件

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
28
29
30
31
32
33
34
35
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:18025</value>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://localhost:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

至此,需要修改和配置的文件就差不多了。

运行 Hadoop

格式化文件系统

1
hdfs namenode -format

启动 NameNode 和 DataNode 服务

1
$HADOOP_HOME/sbin/start-dfs.sh

启动成功后可以访问:

启动 Yarn

1
$HADOOP_HOME/sbin/start-yarn.sh

启动成功后可以访问:

一键启动

1
$HADOOP_HOME/sbin/start-all.sh

查看相关进程

1
2
3
4
5
6
7
jps

3618 SecondaryNameNode
3826 NodeManager
3507 DataNode
3735 ResourceManager
3417 NameNode

遇到的问题

DataNode 启动失败

由于多次格式化导致 NameNode 和 DataNode 的 clusterID 不一致,修改为一致即可。

1
2
3
4
5
$ cat /usr/local/hadoop/current/dfs/data/current/VERSION | grep 'clusterID'
clusterID=CID-2ca7ea05-4ded-4199-b81a-d2e8be1c0324

$ cat /usr/local/hadoop/current/dfs/name/current/VERSION | grep 'clusterID'
clusterID=CID-2ca7ea05-4ded-4199-b81a-d2e8be1c0324