一、 前期准备和集群规划
这里使用的是虚拟机的方式进行Hadoop安装,故前期需要安装VMWare虚拟化软件。需要提前准备的安装包有如下:
1) jdk安装包,下载地址为:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ,
这里我们所使用的jdk是:jdk-8u65-linux-x64.gz。
注1:需要注意jdk有32位和64位之分,应该根据你的系统进行恰当的选择,否则会出问题。
注2:将本机上的jdk文件拷贝到虚拟机上,可以使用复制粘贴命令,直接拖拽的方式会导致jdk包出问题。
2) Hadoop安装包,下载地址为:http://hadoop.apache.org/releases.html , 这里,我们使用是Hadoop版本是:hadoop-2.7.2。
3) 虚拟机准备: 本次安装,在VMware中准备了4台虚拟机,基本配置是:
内存,暂定4G; 硬盘,暂定20G; 操作系统,CentOS-7-x86_64-DVD-1611.iso
4) 集群规划
Vmname hostname IP address software process
Hadoop_master master 192.168.100.100 jdk/Hadoop NameNode/ResourceManager
Hadoop_slave1 slave1 192.168.100.101 jdk/Hadoop DataNode/SecondNode
Hadoop_slave2 slave2 192.168.100.102 jdk/Hadoop DataNode
Hadoop_slave3 slave3 192.168.100.103 jdk/Hadoop DataNode
二、 jdk安装
1、 拷贝安装包: 默认经过前期准备,已经下载了可用的安装包,此时,将该安装包复制到虚拟机中。
2、 检查本地已有的jdk:一般情况下,centos系统自带了openjdk,首先,执行图1中第一个指令,查看是否包含openjdk,然后执行图中第二个指令,具体查看都有什么jdk。若存在,则对每一个jdk均执行图2中的指令,进行卸载操作。卸载完成,后,执行: $ java –version ,进行检测,若输出“java command not found”,则表示卸载成功。
3、 解压缩安装包:执行如下命令:
[zwp@localhost Desktop]$ tar -zvxf jdk-8u65-linux-x64.gz
注1:解压缩时要记住所在的目录,本次安装jdk的安装目录是:/home/hadoop1/Desktop/jdk1.8.0_65/
注2:解压缩正确之后,应该能够得到一个以jdk1.8.0_65命名的文件夹,该文件夹下包含了bin、db、include、jre、lib等文件夹及文件。否则,会出问题。
4、配置jdk的profile文件,该文件位于“/etc/profile”目录。具体配置内容如图3所示。将该内容加入到profile文件中。然后保存关闭该文件。(该配置文件的修改需要在root权限下进行)。
图 1 检查java 版本
图 2 卸载原有版本JDK
图 3 配置java环境变量
注1:修改并保存profile文件后,执行指令:# source profile, 然后执行: # exit ,退出root权限,
在hadoop1权限下再执行一次:
sourceprofile,使得该profile文件生效,否则,只是在root下识别jdk。此时,可以执行:
java -version 来查看具体的jdk安装情况及版本。这里显式的结果如下:
图 4 JDK版本生效
三、 虚拟机集群的基础配置
1、 生成虚拟机集群
已经在一台虚拟机上成功安装了jdk, 并且,已经将必须的Hadoop组件安装包拷贝到了该虚拟机上,下一步,需要生成虚拟机集群:使用VMware自带的克隆功能。
首先,将需要克隆的虚拟机关机(必须是关机状态,才能够实现克隆操作);然后,选中该虚拟机,右击选择“管理”—“克隆”,然后按照提示,进行下一步操作即可,其中,中间需要修改虚拟机的名字(即vmname),最后克隆成功后,关闭该克隆界面即可。
这里,虚拟出来了4台虚拟机,其vmname分别为:hadoop_master、hadoop_slave1、hadoop_slave2、hadoop_slave3.
2、 主机名修改
由于克隆产生的主机名全都是一样的,故,需要修改主机名。
进入该虚拟机,执行如图5所示的第一个命令:
图 5 修改hostname
之后,会出现一个认证界面,输入密码,回车即可:如图6所示:
图 6 认证界面
之后,可以执行指令: $ hostnamectl 来验证是否修改成功。
3、 IP地址的设置
主要是为master主机及其各个slave主机配置IP地址,并实现各自之间的内网通信。
1)本安装,实现对四台虚拟机的一个IP配置:
Master:192.168.100.100
slave1:192.168.100.101 slave2:192.168.100.102 slave3:192.168.100.103
并设置自动启动网络的选项。
配置之后,可以通过互相ping一下ip地址,检测是否能够正常通信。
2)修改hosts 文件:在master主机上,修改hosts文件,配置各个主机的hostname与IP地址的解析。
该host文件位于目录“/etc/hosts”,需要在root权限下修改该hosts文件。具体修改内容如下:
192.168.100.100 master
192.168.100.101 slave1
192.168.100.102 slave2
192.168.100.102 slave3
保存后退出,并将该hosts文件复制到其余3个slave主机上,具体执行指令:(下面指令需要在root权限下执行)
# cd /etc/
# scp hosts slave1:/etc/
# scp hosts slave2:/etc/
#scp hosts slave3:/etc/
4、 免密码登录实现
为了避免每次执行时需要大量地输入root的密码认证,故这里设置免密码登录实现。主要目的是实现,master主机对每个slave主机的免密码登录。具体操作步骤如下:
1) 生成RSA公钥和私钥:执行如图8所示的指令:ssh-keygen -t rsa -P ‘’ ,即可生成RSA的公钥与私钥。
图 7 ssh目录
图 8 ssh密钥生成
注1:该命令需要在master主机上,切换到root用户下,进入到/root/.ssh/文件夹下,执行,如上图7所示。由于.ssh可能是隐藏文件,需要执行:ls –a 来查看。
注2:密钥生成成功后,可以在.ssh目录下看到增加了两个文件“id_rsa”和“id_rsa.pub”分别代表私钥和公钥。
2) 将RSA公钥追加到到每个slave
这一步骤,实现将生成的密钥中的公钥发送到slave1、slave2、slave3三台虚拟机中,实现master对slave1、slave2、salve3的无密钥登录。
图 9 拷贝公钥到slave主机
注1:这里使用的是:ssh-copy-id slave1、 ssh-copy-id slave2、 ssh-copy-id slave3
有提示说,可以使用:cat id_rsa.pub >> slave1:/root/.ssh/authorized_keys 指令实现。但是,我执行该指令,出现了问题,提示slave1中没有authorized_keys文件,即无法实现正确的拷贝公钥。
3) 测试是否成功
此时,已经基本实现了该有的配置,可进行测试:
执行: #ssh slave1 , 即可实现登录到slave1系统中,如图9所示,最后一个命令的执行结果。
注1:需要关闭防火墙。
执行:
# systemctl stop firewalld.service
#systemctl disable firewalld.service
注2:如上步骤的执行是在master主机上进行的。
注3:此处生成的密钥需要是RSA的,因为对应的sshd_config文件下的配置是关于RSA的。
四、 安装Hadoop
1、 解压缩Hadoop安装包:成功后会生成一个hadoop-2.7.2的文件夹。里面包含了bin/sbin/lib/etc/include等。
tar−zvxfhadoop−2.7.2.tar.gz2、配置Hadoop的profile文件1)主要是配置hadoop的安装路径,该profile文件位于“/etc/profile”目录,但是,这个目录下的profile文件,再每次启动时都需要激活一下该文件,即执行:sourceprofile,此时,可以将该配置放在“ /.bashprofile”文件中,永久性的保存。2)配置文件内容,如下:exportHADOOPHOME=/home/hadoop/Desktop/hadoop−2.7.2exportPATH=
PATH:
HADOOPHOME/bin3、配置Hadoop的集群配置文件(注1:以下配置文件,均是在master主机上进行配置,为了减少工作量,就不再对每个slave主机进行分别配置,只是通过拷贝到各slave主机上,实现生效。注2:下面的配置文件所在的目录为:/home/hadoop/Desktop/hadoop−2.7.2/etc/hadoop)1)Hadoop−env.sh文件:修改该文件的JAVAHOME:改:exportJAVAHOME=
{JAVA_HOME}
为:export JAVA_HOME=/home/hadoop/Desktop/jdk1.8.0_65core-site.xml 文件:
主要是增加configuration的内容,如图10所示:
图 10 core-site.xml配置文件
3) hdfs-site.xml 文件
图 11 hdfs-site.xml配置文件
4) slaves文件
slaves文件中写上对s各个lave的标注:
slave1
slave2
slave3
5) 将各个配置文件拷贝到每个slave主机上
4、启动hdfs
NameNode初始化: ./bin/hdfs namenode -format
启动hdfs: ./ sbin/start-dfs.sh
成功启动后,可以通过执行: # jps 指令查看是否成功运行。如果成功运行了,在master主机上会出现 NameNode的进程;而在slave主机上会出现DataNode的进程。
在master的web浏览器上,通过网址: http://mater:50070 即可以通过web界面查看NameNode和DataNode的图形化界面的监控。