Hadoop完全分布式安装配置完整过程
⼀. 硬件、软件准备
1. 硬件设备
为了⽅便学习Hadoop,我采⽤了云服务器来配置Hadoop集。集使⽤三个节点,⼀个阿⾥云节点、⼀个腾讯云节点、⼀个华为云节点,其中阿⾥云和腾讯云都是通过使⽤学⽣优惠渠道购买了⼀年的云服务,华为云使⽤免费7天或15天的云服务器。我决定使⽤腾讯云节点作为Master节点,阿⾥云节点和华为云节点作为Slave节点。集基本结构如下图:
云服务器配置信息如下:
集⽹络环境:
分别在每台机器上创建了⽤户hadoop,并且全部禁⽤了防⽕墙。
2. 软件
由于Hadoop需要JVM环境,所以需要下载JDK。需要的软件清单如下图所⽰。
⼆、环境搭建
1. JAVA安装安装jdk环境变量如何配置
解压
我们下载软件放在了 /home/install-package 下。先在 /home 下创建了java⽬录,并将jdk压缩⽂件解压到该⽬录下,命令如下。
[root@libaoshen_tencent java]# tar -zxvf /home/install-package/ -C java
建⽴软连接
和window上的快捷⽅式⼀样,我们为jdk安装的长路径建⽴⼀个短路径,⽅便我们后⾯设置环境变量。
[root@libaoshen_tencent java]# ln -s /home/java/jdk1.8.0_161/ /home/jdk
配置环境变量
在 /etc/profile 中添加环境变量。
[root@libaoshen_tencent home]
# vim /etc/profile
添加内容:
JAVA_HOME=/home/jdk
CLASSPATH=$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
随后使⽤source /etc/profile 命令使配置⽣效,最后通过执⾏java –version 查看java是否安装配置成功。看到输出的结果是我们安装的内容,说明安装配置成功。
[root@libaoshen_tencent home]# source /etc/profile [root@libaoshen_tencent home]# java -version java version "1.8.0_161"
Java(TM) SE Runtime Environment (build
1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
2. SSH配置
Hadoop控制脚本依靠SSH来进⾏集的管理,为了⽅便操作,设置SSH为免密访问。
进⼊创建的⽤户hadoop的⼯作⽬录下
[root@libaoshen_tencent ~]# su hadoop [hadoop@libaoshen_tencent root]$ cd ~
执⾏ssh创建密钥命令
[hadoop@libaoshen_tencent ~]$ ssh-keygen -t rsa
进⼊hadoop⽤户的⼯作⽬录,查看⽬录下的⽂件,发现出现了⼀个 .ssh ⽂件夹。打开 .ssh ⽂件夹,我们看到了⽣成的公钥 id_rsa.pub 和
私钥 id_rsa 两个⽂件。
[hadoop@libaoshen_tencent ~]$ ls -
al
total 28
drwx
------ 3 hadoop hadoop 4096 Mar 16 23:49 . drwxr-xr-x. 5 root root 4096 Mar 16 23:48 .. -rw------- 1 hadoop hadoop 63 Mar 16 23:49 .bash_history -rw-r--r-- 1 hadoop
hadoop 18 Aug 3 2016 .bash_logout -rw-r--r-- 1 hadoop hadoop 193 Aug 3 2016 .bash_profile -rw-r--r-- 1 hadoop hadoop 231 Aug 3 2016 .bashrc drwx------ 2 hadoop
hadoop 4096 Mar 16 23:49 .ssh [hadoop@libaoshen_tencent ~]$ cd .ssh/
[hadoop
@libaoshen_tencent .ssh]$
ls
id_rsa  id_rsa.pub
将⽣成的公钥覆盖到authorized_keys
[hadoop@libaoshen_tencent .ssh]$ cp id_rsa.pub authorized_keys
通过再这三台机器上分别执⾏上⾯的步骤,将三台机器上hadoop⽤户~/.ssh/authorized_keys 中的内容合成⼀个authorized_keys⽂件,并使⽤scp 命令将该⽂件复刻到其余两台机器上对应的⽬录中。并且同时要设置.ssh ⽬录的访问权限为700,设置.ssh/authorized_keys 的权限为600。具体操作如下。
a.合成后的authorized_keys⽂件
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQC2XHqv9F0+ueiDlBqV7M2yKRdtDRmV7OgW7WFOmcN9abkBAumDM4+vZ6fFkHlmPcUcskm7HFiQ4BEZep8NdaZ8kRr2V4dSy0T8I hadoop@l i b a o s h e n_t e n c e n t ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUqHX/2CTD9hJa+qyoEIq3juAXTXr1dBxQpsfySOA1VbKZkyzxJVGlFae9YmHrOOrnWTRFiDGrfJL/KxO7Kt1mpJFYivhAkORGgNWA hadoop@l i b a o s h e n_a l i ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEA0fq+6HJ72U4S/+FCijVrp6xhKlTOfajQRHISa3+sH3+wQgHzk3OXGYPJC0snkUN5fot+AQcY2n1sc2l+VItRgjxaISXseUjntAG5N0EQb8wjidP
b.为 .ssh 和 .ssh/authorized_keys 分别设置权限为 700 和 600(很关键)
[hadoop@libaoshen_tencent ~]$ chmod 700 .ssh/
[hadoop
@libaoshen_tencent ~]$ chmod 600 .ssh/authorized_keys
c.libaoshen_tencent 节点上测试是否能免密登录,通过输出结果看到,可以成功免密登录
[hadoop@libaoshen_tencent ~]$ ssh hadoop@
libaohshen_tencent
Last login: Sat Mar 17 13:24:42 2018 from 127.0.0.1
d.随后分别使⽤ scp 命令将该authorized_keys 复制到其他两个节点上,同时设置⽂件权限以及分别测试是否能免密登录
[hadoop@libaoshen_tencent ~]$ scp ~/.ssh/authorized_keys hadoop@39.*.*.*:~/.ssh/
[hadoop@libaoshen_tencent ~]$ scp ~
/.ssh/authorized_keys
e.最后,在libaoshen_tencent节点上,即Master节点上尝试免密连接其余的节点,测试ssh是否配置正确。看输出结果,我们已经可以免密
连接Slave节点了,说明ssh配置成功
[hadoop@libaoshen_tencent .ssh]$ ssh hadoop@39.*.*.*
Last failed login: Sat Mar
17 13:31:38 CST 2018 from 193..*.*.* on ssh:notty There were 2 failed login attempts since the last successful login. Last login: Sat Mar 17 13:07:31 2018
Welcome to Alibaba Cloud Elastic Compute Service
!
[hadoop
@libaoshen_ali ~]$
3. Hadoop安装和配置
Master节点安装Hadoop
a. 我们已经将下载好的hadoop-2.7.放在了/home/install-package 中。⾸先使⽤root⾝份登录,再将hadoop-2.7.压缩包解压到 /home/hadoop 中,然后要么设置link,要么修改hadoop-2.7.5 ⽬录为hadoop,缩短hadoop安装⽬录名。操作命令如下。
[root@libaoshen_tencent hadoop]# tar -zxvf hadoop-2.7. -C ../hadoop/[root@libaoshen_tencent hadoop]# mv hadoop-2.7.5 hadoop[root@libaoshen_tencent hadoop]# chown -R hadoop:hadoop hadoop
b. 配置hadoop环境变量
[root@libaoshen_tencent hadoop]# vi /etc/profile
添加如下内容
HADOOP_HOME=/home/hadoop/
hadoop
PATH=
$PATH:$HADOOP_HOME/
bin
export PATH HADOOP_HOME
再执⾏source /etc/profile 让环境变量配置⽣效。同时在 /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh 修改java路径。如下所⽰。[root@libaoshen_tencent hadoop]# vim /usr/hadoop/hadoop/etc/hadoop/hadoop-env.sh
修改java路径为上⾯我们所配置的路径,再执⾏ source hadoop-env.sh 使其⽣效。
修改后,执⾏hadoop version,我们可以看到hadoop的版本号和其他信息。
c. 配置hadoop中的配置⽂件
<-l: hadoop 的核⼼配置⽂件,添加设置为namenode节点的地址,端⼝号⼀般为9000
l:设置备份数量,由于我们有两个datanode,所以设置为2
l:设置jobtracker对应的节点地址,端⼝号⼀般为9001
iv.masters和slaves:masters修改为设置为master的那个节点的ip,slaves修改为设置为slave的节点的ip
v.在master上配置完成后,再使⽤scp命令将java、hadoop及其配置复制到其他的两个节点上
复制hadoop
[hadoop@libaoshen_tencent hadoop]$ scp -r /usr/hadoop/hadoop hadoop@39.*.*.*:/usr/hadoop [hadoop@libaoshen_tencent hadoop]$ scp -r /usr/hadoop/hadoop hadoop@114.*.*.*:/usr/hadoop
复制配置,由于我们的配置是在root⽤户下的,所以需要su root后输⼊密码才能scp
[root@libaoshen_tencent hadoop]# scp -r /etc/profile root@39.*.*.*:/etc [root@libaoshen_tencent hadoop]# scp -r /etc/profile root@114.*.*.*:/etc
三. 启动
格式化
运⾏ hadoop namenode –format,会初始化namenode,记录集元数据,即datanode的信息等。
启动
在⽬录 /usr/hadoop/hadoop/sbin ⽬录中执⾏ ./start-all.sh 即可以启动,执⾏ ./stop-all.sh 即可停⽌
启动后可以使⽤ jps 命令查看hadoop后台进程是否已经启动
Master节点
Slave节点
可以在浏览器中输⼊ namenode 的ip + 8088/50070 查看集状态
安装过程中遇到的问题:
1. 配置不正确,导致分发给其他节点的配置也有问题,最后发现更正的成本⽐较⾼。所以⼀定要仔细检查,确认配置⽆误后,在复
制到每个其他的节点;
2. hostname配置不正确,⼀定要确保 ip 和 hostname 对应,否则就可能出现 hostname unknown等报错;
3. 在启动过程中,hadoop会打印⽇志,当出现问题时,可以查看⽇志信息,准确定位错误位置。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。