为了方便学习Hadoop,我采用了云服务器来配置Hadoop集群。集群使用三个节点,一个阿里云节点、一个腾讯云节点、一个华为云节点,其中阿里云和腾讯云都是经过使用学生优惠渠道购买了一年的云服务,华为云使用免费7天或15天的云服务器。我决定使用腾讯云节点做为Master节点,阿里云节点和华为云节点做为Slave节点。集群基本结构以下图:java
云服务器配置信息以下:node
集群网络环境:linux
分别在每台机器上建立了用户hadoop,而且所有禁用了防火墙。vim
2. 软件浏览器
因为Hadoop须要JVM环境,因此须要下载JDK。须要的软件清单以下图所示。bash
1. JAVA安装服务器
咱们下载软件jdk-8u61-linux-x64.tar.gz放在了 /home/install-package 下。先在 /home 下建立了java目录,并将jdk压缩文件解压到该目录下,命令以下。网络
和window上的快捷方式同样,咱们为jdk安装的长路径创建一个短路径,方便咱们后面设置环境变量。ssh
在 /etc/profile 中添加环境变量。oop
# 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是否安装配置成功。看到输出的结果是咱们安装的内容,说明安装配置成功。
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用户的工做目录,查看目录下的文件,发现出现了一个 .ssh 文件夹。打开 .ssh 文件夹,咱们看到了生成的 公钥 id_rsa.pub 和私钥 id_rsa 两个文件。
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
a.合成后的authorized_keys文件
hadoop@libaoshen.novalocal
b.为 .ssh 和 .ssh/authorized_keys 分别设置权限为 700 和 600(很关键)
[hadoop
@libaoshen_tencent ~]$ chmod 600 .ssh/authorized_keys
c.libaoshen_tencent 节点上测试是否能免密登陆,经过输出结果看到,能够成功免密登陆
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@114.*.*.*:~/.ssh/
e.最后,在libaoshen_tencent节点上,即Master节点上尝试免密链接其他的节点,测试ssh是否配置正确。看输出结果,咱们已经能够免密链接Slave节点了,说明ssh配置成功
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安装和配置
a. 咱们已经将下载好的hadoop-2.7.5.tat.gz放在了 /home/install-package 中。首先使用root身份登陆,再将 hadoop-2.7.5.tar.gz压缩包解压到 /home/hadoop 中,而后要么设置link,要么修改hadoop-2.7.5 目录为hadoop,缩短hadoop安装目录名。操做命令以下。
b. 配置hadoop环境变量
添加以下内容
hadoop PATH=
$PATH:$HADOOP_HOME/
bin export PATH HADOOP_HOME
再执行source /etc/profile 让环境变量配置生效。同时在 /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh 修改java路径。以下所示。
修改java路径为上面咱们所配置的路径,再执行 source hadoop-env.sh 使其生效。
修改后,执行hadoop version, 咱们能够看到hadoop的版本号和其余信息。
c. 配置hadoop中的配置文件
i.core-site.xml: hadoop 的核心配置文件,添加设置为namenode节点的地址,端口号通常为9000
ii.hdfs-site.xml:设置备份数量,因为咱们有两个datanode,因此设置为2
iii.mapred-site.xml:设置jobtracker对应的节点地址,端口号通常为9001
iv.masters和slaves:masters修改成设置为master的那个节点的ip,slaves修改成设置为slave的节点的ip
v.在master上配置完成后,再使用scp命令将java、hadoop及其配置复制到其余的两个节点上
复制hadoop
复制配置,因为咱们的配置是在root用户下的,因此须要su root后输入密码才能scp
运行 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会打印日志,当出现问题时,能够查看日志信息,准肯定位错误位置。