![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fa57b77720073237f316588f302bcb35.jpeg)
注:
- 以下标 ⋆ \star ⋆ 的步骤需要在三台机器上各自完成,其余只需要在 m a s t e r master master 上完成;
- 教程中涉及的用户名、路径和 I P IP IP 地址等信息根据实际情况填入即可。
环境说明
- U b u n t u 16.04 Ubuntu\ 16.04 Ubuntu 16.04 虚拟机三台,内存为 4 G B 4GB 4GB ;
- J D K JDK JDK 环境(最新版本为 1.8.0 _ 191 1.8.0\_191 1.8.0_191 );
- H a d o o p Hadoop Hadoop 环境(最新版本为 3.1.1 3.1.1 3.1.1 )。
前期准备
- 修改主机名
⋆
\star
⋆
- 修改
h
o
s
t
n
a
m
e
hostname
hostname:一台修改为
m
a
s
t
e
r
master
master,另外两台分别修改为
s
l
a
v
e
1
slave1
slave1 和
s
l
a
v
e
2
slave2
slave2。
ubuntu@VM-0-16-ubuntu:~$ sudo vim /etc/hostname
- 修改
h
o
s
t
s
hosts
hosts:添加新的主机名。
以 m a s t e r master master 为例:ubuntu@VM-0-16-ubuntu:~$ sudo vim /etc/hosts
127.0.0.1 localhost 127.0.1.1 master
- 执行重启命令。
重启后显示如下则表示修改成功。ubuntu@VM-0-16-ubuntu:~$ sudo reboot
ubuntu@master:~$
- 修改
h
o
s
t
n
a
m
e
hostname
hostname:一台修改为
m
a
s
t
e
r
master
master,另外两台分别修改为
s
l
a
v
e
1
slave1
slave1 和
s
l
a
v
e
2
slave2
slave2。
- 配置
h
o
s
t
s
hosts
hosts 文件
⋆
\star
⋆
将三台虚拟机的内网 I P IP IP 及主机名写入 h o s t s hosts hosts 文件。172.21.0.16 master 172.21.0.2 slave1 172.21.0.10 slave2
- 关闭防火墙
⋆
\star
⋆
- 查看防火墙状态:
a
c
t
i
v
e
active
active 为开启,
i
n
a
c
t
i
v
e
inactive
inactive 为关闭。
ubuntu@master:~$ sudo ufw status
- 开启/关闭防火墙。
ubuntu@master:~$ sudo ufw enable|disable
- 查看防火墙状态:
a
c
t
i
v
e
active
active 为开启,
i
n
a
c
t
i
v
e
inactive
inactive 为关闭。
- 安装
S
S
H
SSH
SSH
⋆
\star
⋆
- 更新源列表。
ubuntu@master:~$ sudo apt-get update
- 安装
S
S
H
SSH
SSH 。
ubuntu@master:~$ sudo apt-get install openssh-server
- 查看
S
S
H
SSH
SSH 服务是否启动。
若没有,则启动 S S H SSH SSH 服务。ubuntu@master:~$ sudo ps -e | grep ssh
ubuntu@master:~$ sudo service ssh start
- 更新源列表。
- 设置
S
S
H
SSH
SSH 无密码登录
- 生成
k
e
y
key
key。
⋆
\star
⋆
ubuntu@master:~$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
- 设置免密码登录本机。
⋆
\star
⋆
ubuntu@master:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ubuntu@master:~$ chmod 0600 ~/.ssh/authorized_keys ubuntu@master:~$ ssh localhost ubuntu@master:~$ exit
-
m
a
s
t
e
r
master
master 设置免密码登录
s
l
a
v
e
slave
slave。
ubuntu@master:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave1 ubuntu@master:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
- 生成
k
e
y
key
key。
⋆
\star
⋆
配置JDK
- 通过源安装
O
r
a
c
l
e
J
D
K
Oracle\ JDK
Oracle JDK
⋆
\star
⋆
ubuntu@master:~$ cd /usr/lib ubuntu@master:/usr/lib$ sudo add-apt-repository ppa:webupd8team/java ubuntu@master:/usr/lib$ sudo apt-get update ubuntu@master:/usr/lib$ sudo apt-get install oracle-java8-installer oracle-java8-set-default
- 配置
J
D
K
JDK
JDK 环境
⋆
\star
⋆
在 / e t c / p r o f i l e /etc/profile /etc/profile 文件末尾处添加:ubuntu@master:~$ sudo vim /etc/profile
查看 J a v a Java Java 版本信息,若出现则说明配置成功。export JAVA_HOME=/usr/lib/jvm/java-8-oracle export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
ubuntu@master:~$ source /etc/profile ubuntu@master:~$ java -version
配置Hadoop
- 安装
H
a
d
o
o
p
Hadoop
Hadoop
从 H a d o o p Hadoop Hadoop 官网下载压缩包并解压:ubuntu@master:~$ tar -zxvf hadoop-3.1.1.tar.gz
- 配置
H
a
d
o
o
p
Hadoop
Hadoop 环境
⋆
\star
⋆
同样是修改 / e t c / p r o f i l e /etc/profile /etc/profile 文件,在其末尾添加:
然后执行 s o u r c e source source 命令使其立即生效。export HADOOP_HOME=/home/ubuntu/hadoop-3.1.1 export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
ubuntu@master:~$ source /etc/profile
- 新建相关文件夹
ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs/tmp ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs/name ubuntu@master:~$ mkdir /home/ubuntu/hadoop-3.1.1/hdfs/node
- 配置相关文件
- 进入相关路径。
ubuntu@master:~$ cd /home/ubuntu/hadoop-3.1.1/etc/hadoop
- 配置
c
o
r
e
−
s
i
t
e
.
x
m
l
core-site.xml
core−site.xml 。
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/home/ubuntu/hadoop-3.1.1/hdfs/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration>
- 配置
h
a
d
o
o
p
−
e
n
v
.
s
h
hadoop-env.sh
hadoop−env.sh 。
# The java implementation to use. By default, this environment # variable is REQUIRED on ALL platforms except OS X! export JAVA_HOME=/usr/lib/jvm/java-8-oracle export HDFS_NAMENODE_USER=ubuntu export HDFS_DATANODE_USER=ubuntu export HDFS_SECONDARYNAMENODE_USER=ubuntu export YARN_RESOURCEMANAGER_USER=ubuntu export YARN_NODEMANAGER_USER=ubuntu
- 配置
h
d
f
s
−
s
i
t
e
.
x
m
l
hdfs-site.xml
hdfs−site.xml 。
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/ubuntu/hadoop-3.1.1/hdfs/name</value> <final>true</final> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/ubuntu/hadoop-3.1.1/hdfs/data</value> <final>true</final> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9870</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
- 配置
y
a
r
n
−
s
i
t
e
.
x
m
l
yarn-site.xml
yarn−site.xml 。
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
- 配置
m
a
p
r
e
d
−
s
i
t
e
.
x
m
l
mapred-site.xml
mapred−site.xml 。
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> <property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx1024M</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>3072</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2560M</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
- 配置
w
o
r
k
e
r
s
workers
workers 。
slave1 slave2
- 进入相关路径。
- 添加
h
d
f
s
hdfs
hdfs 和
y
a
r
n
yarn
yarn 权限
- 在
s
t
a
r
t
−
d
f
s
.
s
h
start-dfs.sh
start−dfs.sh 和
s
t
o
p
−
d
f
s
.
s
h
stop-dfs.sh
stop−dfs.sh 文件开头添加以下内容:
% #!/usr/bin/env bash HDFS_DATANODE_USER=ubuntu HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=ubuntu HDFS_SECONDARYNAMENODE_USER=ubuntu
- 在
s
t
a
r
t
−
y
a
r
n
.
s
h
start-yarn.sh
start−yarn.sh 和
s
t
o
p
−
y
a
r
n
.
s
h
stop-yarn.sh
stop−yarn.sh 文件开头添加以下内容:
#!/usr/bin/env bash YARN_RESOURCEMANAGER_USER=ubuntu HDFS_DATANODE_SECURE_USER=yarn YARN_NODEMANAGER_USER=ubuntu
- 在
s
t
a
r
t
−
d
f
s
.
s
h
start-dfs.sh
start−dfs.sh 和
s
t
o
p
−
d
f
s
.
s
h
stop-dfs.sh
stop−dfs.sh 文件开头添加以下内容:
- 从主机相关配置(将
H
a
d
o
o
p
Hadoop
Hadoop 相关文件夹拷贝到
s
l
a
v
e
slave
slave 中)
ubuntu@master:~$ scp -r /home/ubuntu/hadoop-3.1.1 ubuntu@slave1:/home/ubuntu ubuntu@master:~$ scp -r /home/ubuntu/hadoop-3.1.1 ubuntu@slave2:/home/ubuntu
测试配置结果
- 格式化
n
a
m
e
n
o
d
e
namenode
namenode
ubuntu@master:~/hadoop-3.1.1$ hdfs namenode -format
- 启动
H
a
d
o
o
p
Hadoop
Hadoop
ubuntu@master:~/hadoop-3.1.1$ sbin/start-all.sh WARNING: Attempting to start all Apache Hadoop daemons as ubuntu in 10 seconds. WARNING: This is not a recommended production deployment configuration. WARNING: Use CTRL-C to abort. Starting namenodes on [master] Starting datanodes Starting secondary namenodes [master] Starting resourcemanager Starting nodemanagers
- 查看进程
⋆
\star
⋆
ubuntu@master:~$ jps 5303 NameNode 7837 Jps 5773 ResourceManager
ubuntu@slave1:~$ jps 30757 NodeManager 491 Jps 30621 DataNode
ubuntu@slave2:~$ jps 30834 NodeManager 30696 DataNode 813 Jps
- 测试配置结果
显示以下结果说明运行成功:ubuntu@master:~/hadoop-3.1.1$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar pi 10 10
Job Finished in 25.033 seconds Estimated value of Pi is 3.20000000000000000000
参考资料: