1 安装环境
1.1 客户端
1.2 服务端
1.3 安装准备
2 操作系统安装
2.1.1 BIOS打开虚拟化支持
2.1.2 关闭防火墙
2.1.3 安装VNC
3 JAVA安装
3.1 配置目的
3.2 配置过程
3.3 结果验证
4 主机名配置
4.1 配置目的
4.2 配置过程
4.3 结果验证
5 增加hadoop用户
5.1 配置目的
5.2 配置过程
5.3 结果验证
6 Hadoop用户无密码访问配置
6.1 配置目的
6.2 配置过程
6.3 结果验证
7 Hadoop文件安装
7.1 配置目的
7.2 配置过程
7.3 结果验证
8 Hadoop配置文件更改
8.1 hadoop-env.sh
8.2 yarn-env.sh
8.3 core-site.xml
8.3.1 配置结果
8.3.2 参数解释
8.4 hdfs-site.xml
8.4.1 配置结果
8.4.2 参数解释
8.5 mapred-site.xml
8.5.1 配置结果
8.5.2 参数解释
8.6 yarn-site.xml
8.6.1 配置结果
8.6.2 参数解释
8.7 capacity-scheduler.xml
8.7.1 配置结果
8.7.2 参数解释
8.8 slaves
8.9 Hadoop文件从Master拷贝至所有Slave
8.10 命令行结果验证
8.11 HTTP结果验证
9 HDFS文件分布式存储位置查看
9.1 上传文件
9.2 NameNode存储信息
9.3 DataNode存储信息
1 安装环境
1.1 客户端
一台Windows XP作为客户端,IP地址为192.168.1.100,由于客户端为HTTP访问,因此配置十分简单,只需要在下面的文件中加入主机名配置即可:
C:\WINDOWS\system32\drivers\etc\Hosts:
192.168.1.254 Master
192.168.1.253 Slave1
192.168.1.252 Slave2
另外,最好有Secure CRT、VNC Viewer等作为客户端操作各台服务器。
1.2 服务端
三台Linux(虚拟机)作为Hadoop服务器,操作系统均为:
rhel-server-6.4-x86_64-dvd[ED2000.COM].iso
服务器IP地址分别为:
192.168.1.254为主控节点,运行NameNode、SecondaryNameNode、ResourceManager;
192.168.1.253运行DataNode、NodeManager
192.168.1.252运行DataNode、NodeManager
1.3 安装准备
需要以下软件:
VMware-workstation-full-9.0.2-1031769.exe;
rhel-server-6.4-x86_64-dvd[ED2000.COM].iso;
jdk-7-linux-x64.rpm.rpm:JDK 1.7.0_55版本;
hadoop-2.2.0.tar.gz:官网下载;
eclipse-standard-kepler-SR2-linux-gtk-x86_64.tar.gz:用于开发(开发需要下载Hadoop源代码:hadoop-2.2.0-src.tar.gz);
Winscp:用于Windows和Linux之间互传文件;
VNC服务端相关:远程桌面
tigervnc-1.1.0-5.el6.x86_64.rpm
tigervnc-server-1.1.0-5.el6.x86_64.rpm
xorg-x11-fonts-misc-7.2-9.1.el6.noarch.rpm
VNC客户端相关:vnc-E4_5_1-x86_x64_win32.exe,远程桌面客户端
SecureCRT :HAP_SecureCRT_5.1.3.exe,远程登录
2 操作系统安装
2.1.1 BIOS打开虚拟化支持
利用虚拟机方式安装,安装时需要注意的问题是需要在BIOS中打开Intel CPU的虚拟化支持。不同的主板其位置不同,如:
其原因是,Intel CPU 要求芯片和 BIOS 支持 EM64T 和 VT(Virtualization Technology,虚拟化技术),以运行 64 位虚拟机。
2.1.2 关闭防火墙
Redhat使用了SELinux来增强安全,关闭的办法为:
(1)永久有效:修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。
(2)即时生效:setenforce 0
(3)永久性关闭:chkconfig iptables off
(4)即时生效,重启后失效:service iptables stop
安装好操作系统后,最好保证SSH存在、VNC存在、防火墙关闭。
2.1.3 安装VNC
如果对VI操作不够熟悉,也可以使用界面形式,需要在Linux上启动VNC服务器,在Windows上安装VNC客户端。
VNC服务器有的Linux存在,在RedHat如果不存在,需要在安装光盘中找出三个rpm文件:
xorg-x11-fonts-misc-7.2-9.1.el6.noarch.rpm
tigervnc-1.1.0-5.el6.x86_64.rpm
tigervnc-server-1.1.0-5.el6.x86_64.rpm
由于存在依赖特性,先安装xorg-x11-fonts-misc-7.2-9.1.el6.noarch.rpm,再安装剩下两个。
启动VNC的前提是防火墙关闭,命令为vncserver即可,多敲几个vncserver可以打开多个远程桌面终端。
客户端访问:
1表示当前的远程桌面终端号。
3 JAVA安装
3.1 配置目的
Hadoop本身是JAVA开发的,因此需要安装JAVA虚拟机以支持其运行。如果只是线上部署,可以安装JRE,如果还需要开发,则安装JDK,建议安装JDK,因为其包含了JRE。并且建议安装7.0以上版本。
3.2 配置过程
由于操作系统本身为64位,因此下载的JDK版本为基于Linux的64位。三台机器均安装JDK,版本为1.7.0_55,64位。
oracle网站下载:jdk-7-linux-x64.rpm.rpm
拷贝至各台机器后,运行rpm –ivh jdk-7-linux-x64.rpm.rpm即可完成安装。
安装路径默认为:/usr/java/jdk1.7.0_55
在/etc/profile配置文件(也可在/etc/profile.d/java.sh中加入,本质是一样的,只是profile.d是目录)后面加入:
export JAVA_HOME=/usr/java/jdk1.7.0_55
export PATH=$PATH:$JAVA_HOME/jre/bin:$JAVA_HOME/bin
并使用source /etc/profile使之立即生效(这是一个很有用的命令)。
如图:
理论上,不配置JAVA_HOME也可以,在Hadoop的配置文件再具体指定也可以保证Hadoop启动,但设置好一些常用的环境变量要方便很多。
3.3 结果验证
测试JAVA是否安装成功:
[root@MasterHost ~]# java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
[root@MasterHost ~]#
出现上面的版本信息表示安装成功。如图:
[root@MasterHost ~]# echo $JAVA_HOME
/usr/java/jdk1.7.0_55
出现上述信息表示环境变量设置成功。
如图为配置结果查看:
4 主机名配置
4.1 配置目的
实际上就是类似于DNS的作用,使得各台机器之间通过主机名访问,而不是IP地址直接访问。这主要是为了在写Hadoop配置文件时无需写IP地址,直接写主机名即可,防止IP地址变化出现问题。
4.2 配置过程
在三台机器的/etc/hosts文件中都加入以下内容:
192.168.1.254 Master
192.168.1.253 Slave1
192.168.1.252 Slave2
如图为配置结果:
同时,在各自的/etc/sysconfig/network文件中的HOSTNAME改为相应内容,如192.168.1.254中需要修改为:
[root@MasterHost CYX]# cat /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=Master
重启网络服务后主机名更改生效:service network restart
如图:
4.3 结果验证
Master、Slave1、Slave2之间互相能ping通,如:
5 增加hadoop用户
5.1 配置目的
不在root下进行安装的目的是防止对操作系统进行的某些改动,可能影响了服务器上其它的服务,起到隔离作用。并且在删除Hadoop服务时较为方便。
5.2 配置过程
增加用户组:groupadd hadoop
增加用户(放置hadoop用户组中):useradd -g hadoop hadoop
利用root 用户修改hadoop用户密码:passwd hadoop
如图:
5.3 结果验证
可以查看/home文件夹下面是否创建了hadoop用户,默认情况下,创建的用户位于/home目录下:
如果该用户要操作其它目录的文件,需要root用户进行权限分配,后面可以看出这一点。
6 Hadoop用户无密码访问配置
6.1 配置目的
需求是每个机器都可以无密码SSH到其他的机器(当然可以是root,也可以是其他的用户,此处用户是hadoop)。因此,这一步的前提是所有机器的hadoop已经正确创建。
6.2 配置过程
1、各个机器都进入到hadoop用户中,进入根目录:
su hadoop(切换进hadoop用户)
cd ~(进入用户根目录,即/home/hadoop)
2.所有机器各自生成私钥、公钥:
ssh-keygen -t rsa
直接打Enter就可以,如果提示覆盖就选择Y
如图所示:
进入.ssh目录:
cd .ssh
在这个目录下面就可以看到以下两个文件
id_dsa id_dsa.pub
如图所示:
其中,id_rsa是本机的私钥,id_rsa.pub是本机的公钥(公钥是给其它机器使用的,私钥是自己保留的,两者匹配表明验证通过,但理论上也可以反过来?),需要将公钥拷贝到其它要访问本机的机器上。
为了方便拷贝,这里采用的策略是:先将所有公钥拷贝至Master机器,之后再全部复制至其它机器。
三台机器都生成了以上的公钥后:
在Master的hadoop用户下的.ssh目录创建Slave1和Slave2文件夹:
到Slave1和Slave2机器上分别将各自的公钥拷贝至Master的Slave1和Slave2文件夹:
Slave1机器的.ssh目录中操作:
scp id_rsa.pub [email protected]:/home/hadoop/.ssh/Slave1
Slave2机器的.ssh目录中操作:
scp id_rsa.pub [email protected]:/home/hadoop/.ssh/Slave2
如图为Slave1的拷贝:
如图为Slave2的拷贝:
到Master机器上查看结果:
scp是Linux机器之间拷贝文件的很有用的一个命令。
du –a可以查看所有文件夹及子文件夹下面的所有文件(这是另一个很有用的命令)。
还可以查看确认是否拷贝正确:
下面就是将上面的三部分内容拷贝至文件authorized_keys:
[hadoop@master .ssh]$ touch authorized_keys (创建新文件)
[hadoop@master .ssh]$ cat id_rsa.pub >> authorized_keys (>>表示追加至文件尾部)
[hadoop@master .ssh]$ cat Slave1/id_rsa.pub >> authorized_keys
[hadoop@master .ssh]$ cat Slave2/id_rsa.pub >> authorized_keys
修改authorized_keys的权限:
chmod 600 authorized_keys
这句话的含义是要保证authorized_keys只有用户自己有写权限,否则验证无效,防止出现系统漏洞。
注意:文件和目录的权限别设置成chmod 777(所有用户都可以任意访问),这个权限太大了,不安全。
再将authorized_keys拷贝至Slave1和Slave2机器上:
[hadoop@master .ssh]$ scp authorized_keys hadoop@Slave1:/home/hadoop/.ssh
[hadoop@master .ssh]$ scp authorized_keys hadoop@Slave2:/home/hadoop/.ssh
同样,都要改变访问权限:chmod 600 authorized_keys
此时即可以实现无密码访问:
6.3 结果验证
在hadoop用户下,3台机器上互相进行ssh能够无密码直接登录,如:
[hadoop@master .ssh]$ ssh Slave1
Last login: Sun Jul 6 16:03:37 2014 from slave2
[hadoop@slave1 ~]$ exit
logout
Connection to Slave1 closed.
[hadoop@master .ssh]$ ssh Slave2
Last login: Sun Jul 6 01:03:11 2014 from slave1
[hadoop@slave2 ~]$ exit
logout
Connection to Slave2 closed.
注意,测试时登录后需要exit退出,否则就相当于进入了另一台机器了。
7 Hadoop文件安装
7.1 配置目的
在三台机器上安装Hadoop。
7.2 配置过程
实质上只要将hadoop-2.2.0.tar.gz释放至某个地方即可。但考虑到三台机器都需要进行后续的配置文件更改,并且各个机器的配置文件几乎一样,因此这里可以先在Master机器上进行安装和配置,之后只需要拷贝过去即可。
这里计划安装于/usr目录下,但因为/usr目录下默认hadoop用户无法操作,因此先切换回root用户:
su –
然后将hadoop-2.2.0.tar.gz拷贝至/usr目录下:
cp hadoop-2.2.0.tar.gz /usr
释放:
[root@master usr]# tar -xzvf hadoop-2.2.0.tar.gz
赋予hadoop用户操作该文件夹的权利:
chown -R hadoop:hadoop /usr/hadoop-2.2.0/
7.3 结果验证
切换回hadoop用户,查看hadoop-2.2.0文件夹是否属于hadoop用户: