Hadoop 系列(二)安装配置
Hadoop 官网:http://hadoop.apache.or
一、Hadoop 安装
1.1 Hadoop 依赖的组件
JDK :从 Oracle 官网下载,设置环境变量(JAVA_HOME、PATH 和 CLASSPATH)。SSH(安全外壳标议) :推荐安装 Openssh。
Hadoop 需要通过 SSH 来启动 Slave 列表中各台主机的守护进程,因此 SSH 也是必须安装的,即使是安装伪分布式版本(因为 Hadoop 并没有区分开集群式和伪分布式)。对于伪分布式, Hadoop 会采用与集群相同的处理方式,即按次序启动文件 conf/slaves 中记载的主机上的进程;只不过在伪分布式中 Salve 为 localhost(即为自身),所以对于伪分布式 Hadoop,SSH 一样是必需的。
1.2 Hadoop 安装
(1) 创建 hadoop 用户
groupadd hadoop
useradd -g hadoop -m -s /bin/bash hadoop
passwd hadoop
为 hadoop 用户增加管理员权限:
vim /etc/sudoers
root ALL =(ALL ) ALL hadoop ALL =(ALL ) ALL
(2) 安装并配置 SSH 无密码登陆
CentOS 默认已安装了 SSH client、SSH server,打开终端执行如下命令进行检验
rpm -qa | grep ssh
如果返回的结果如下图所示,包含了 SSH client 跟 SSH server,则不需要再安装
若需要安装,则可以通过 yum 进行安装:
yum -y install openssh-clients openssh-server
接着执行如下命令测试一下 SSH 是否可用:
ssh localhost
此时会有如下提示(SSH 首次登陆提示),输入 yes 。然后按提示输入密码,这样就登陆到本机了。
[root@mdw home]# ssh localhost
The authenticity of host
ECDSA key fingerprint is bd:66 :a8:94 :98 :d5:0 b:f3:bc:e9:5 c:41 :4 c:ca:b3:d4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added
root@localhost
Last login: Fri Apr 20 07 :07 :31 2018 from 192.168 .2 .1
但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
首先输入 exit 退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
exit
cd ~/.ssh/
rm ./id_rsa*
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
chmod 600 ./authorized_keys
注意: 一定要 chmod 来一下,不然无法起作用。此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。
(3) Hadoop 安装
wget http: //mirrors.hust.edu.cn/apache /hadoop/common /hadoop-3.1.0/hadoop -3.1 .0 .tar.gz
tar -zxvf hadoop-3.1 .0 .tar.gz
sudo mv ./hadoop-3.1 .0 / ./hadoop
sudo chown -R hadoop: hadoop ./hadoop
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息
/usr/ local/hadoop/ bin/hadoop version
[hadoop@mdw ~]$ hadoop version Hadoop 3.1 .0 Source code repository https: Compiled by centos on 2018 -03 -30 T00: 00 Z Compiled with protoc 2.5 .0 From source with checksum 14182 d20c972b3e2105580a1ad6990 This command was run using /usr/ local/hadoop/ share/hadoop/ common/hadoop-common-3.1 .0 .jar
(4) 环境变量
vim /etc/profile.d/start.sh
HADOOP_HOME=/home/hadoop/ export PATH=
P
A
T
H
<
/
s
p
a
n
>
:
<
s
p
a
n
c
l
a
s
s
=
"
h
l
j
s
−
v
a
r
i
a
b
l
e
"
>
PATH</span>:<span class="hljs-variable">
P A T H < / s p a n > : < s p a n c l a s s = " h l j s − v a r i a b l e " > HADOOP_HOME /bin:$HADOOP_HOME /sbin
二、Hadoop 集群配置
(1) 网络配置
配置主机名:
vim /etc/sysconfig/network
NETWORKING=yes HOSTNAME=master
配置 IP/主机名 的映射关系
vim /etc/hosts
192.168.2.101 master 192.168.2.102 slave1
修改完成后需要重启一下,重启后在终端中才会看到机器名的变化。
配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功
ping master -c 3 # 只ping 3 次,否则要按 Ctrl+c 中断
ping slave1 -c 3
(2) SSH 无密码登陆节点配置
这个操作是要让 master 节点可以无密码 SSH 登陆到各个 slave 节点上。
首先生成 master 节点的公匙,在 master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次)
cd ~/.ssh
rm ./id_rsa*
ssh-keygen -t rsa
chmod 600 ./authorized_keys
让 master 节点需能无密码 SSH 本机,在 master 节点上执行:
cat ./id_rsa.pub >> ./authorized_keys
完成后可执行 ssh master 验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 master 节点将上公匙传输到 slave1 节点:
scp ~/.ssh/id _rsa.pub hadoop@slave1:/home/hadoop/
scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:
接着在 Slave1 节点上,将 ssh 公匙加入授权:
mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ./authorized_keys
rm ~/id_rsa.pub
如果有其他 slave 节点,也要执行将 master 公匙传输到 slave 节点,在 slave 节点上加入授权这两步。
这样,在 master 节点上就可以无密码 SSH 到各个 slave 节点了,可在 master 节点上执行如下命令进行检验:
ssh slave1
(3) 配置集群/分布式环境配置
集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的 5 个配置文件,这里仅介绍了正常启动所必须的设置项: workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。
配置 workers
workers 将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。
本教程让 master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加一行内容:slave1。
配置 conf/core-site.xml
<configuration >
<property >
<name > fs.defaultFS</name >
<value > hdfs://localhost:9090</value >
</property >
<property >
<name > hadoop.tmp.dir</name >
<value > /usr/local/hadoop/data</value >
</property >
</configuration >
配置 conf/hdfs-site.xml
dfs.replication 一般设为 3,但我们只有一个 slave 节点,所以 dfs.replication 的值还是设为 1
<configuration >
<property >
<name > dfs.replication</name >
<value > 1</value >
</property >
</configuration >
配置 conf/mapred-site.xml
<configuration >
<property >
<name > mapreduce.framework.name</name >
<value > yarn</value >
</property >
</configuration >
配置 conf/yarn-site.xml
<configuration >
<property >
<name > yarn.resourcemanager.hostname</name >
<value > localhost</value >
</property >
<property >
<name > yarn.nodemanager.aux-services</name >
<value > mapreduce_shuffle</value >
</property >
</configuration >