笔者从事大数据相关的工作,说不清什么原因,就是想自己搞一个 hadoop 集群,本文来记录一下伪分布式下 hadoop 最精简的安装。
安装环境
ubuntu-20.04.3 LTS
jdk-1.8.0_321
hadoop-2.10.1
配置 ssh 无密登陆
1
2
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub qzp@localhost
安装 jdk
在 Oracle 官网 下载所需要版本的 jdk 安装包,解压到 /usr/local
文件夹中,并在 ~/.bashrc
中设置环境变量。
1
2
3
4
# set java home
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
安装 hadoop
在 Apache Hadoop 官网 下载所需要版本的 hadoop 安装包,解压到 /usr/local
文件夹中,在 ~/.bashrc
中设置环境变量。
1
2
3
4
# set hadoop home
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
修改 hadoop 配置文件
hadoop 的配置文件都在 $HADOOP_HOME/etc/hadoop
文件夹中。
hadoop_env.sh
1
export JAVA_HOME=/usr/local/jdk1.8
core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
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
23
24
25
26
27
28
29
30
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>localhost:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>localhost:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>nodes total count</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop/data/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop/data/dfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///usr/local/hadoop/data/dfs/namesecondary</value>
<final>true</final>
</property>
</configuration>
mapred-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>localhost:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
</configuration>
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
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
slaves
1
localhost
格式化 namenode
1
$HADOOP_HOME/bin/hdfs namenode -format
如果格式化成功则会看到 common.Storage: Storage directory /usr/local/hadoop/data/dfs/name has been successfully formatted.
的提示。
启动 hadoop
1
$HADOOP_HOME/sbin/start-all.sh
使用
jps
命令查看进程是否启动如果 hadoop 成功启动则会有以下 5 个进程。
1 2 3 4 5
DataNode NodeManager ResourceManager NameNode SecondaryNameNode
Web UI 查看集群状态
http://localhost:50070/
查看 namenode 和 datanode 是否启动成功http://localhost:8088/
查看 yarn 是否启动成功查看端口占用情况
netstat -ntupl