总体概述
1. 目标
1). 零基础手把手纯操作,包含每个细节
2). 逐级进阶,每个阶段都在上一阶段的基础上修改而成
2. 工具及版本
1). 操作系统Windows 10
2). 虚拟机软件VMware Workstation 12 Pro
3). Linux版本CentOS-6.9-x86_64-minimal
4). jdk版本jdk-7u67-linux-x64.tar.gz
5). hadoop版本hadoop-2.6.5.tar.gz
6). 辅助工具: xShell, xFtp
7). 为方便起见,本例中全部使用root用户
3. 四个阶段
1). 第一阶段:hadoop单机伪分布(single)
2). 第二阶段:Hadoop完全分布式(full)
3). 第三阶段:Hadoop高可用+联邦(HA+Federation)
4). 第四阶段:Hadoop高可用+联邦+视图文件系统(HA+Federation+ViewFs)
第一阶段: hadoop单机伪分布(single)
0. 步骤概述
1). 配置网络修改主机名
2). 配置ssh免密码登录
3). 安装jdk
4). 安装hadoop
5). 配置hadoop单机伪分布运行环境(不使用yarn)
6). 为hadoop单机伪分布增加yarn配置
1. 配置网络修改主机名
1.1 查看VMware虚拟网络
1.1.1 点击VMware菜单“编辑(E)”
1.1.2 在下拉菜单列表选择“虚拟网络编辑器”
1.1.3 在弹出的“虚拟网络编辑器”窗口右下角选择“更改设置(C)”
1.1.4 如果windows弹出的安全提示选择“是”
1.1.5 在窗口上方重新刷新的网络列表里选中“NAT模式”,窗口中间的“WMnet信息”下,复选框会默认选中“NAT模式(与虚拟机共享主机的IP地址)(N)”
1.1.6 点击“NAT设置(S)…”
1.1.7 在弹出的“NAT设置”窗口可以查看到如下信息:
网络VMnet8
子网IP:192.168.111.0
子网掩码:255.255.255.0
网关IP(G):192.168.111.2
#使用上述信息配置网卡相关属性
1.2 配置虚拟机网卡ifcfg-eth0
1.2.1 打开配置文件ifcfg-eth0
[root@hadoop0 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
1.2.2 删除ifcfg-eth0文件中的如下属性
HWADDR=xx:xx:xx:xx:xx:xx
UUID=xxx
1.2.3 为ifcfg-eth0文件添加如下属性,如已经存在则替换或修改
TYPE=Ethernet
IPADDR=192.168.111.111 #ip地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.111.2 #网关
ONBOOT=yes #随系统自动启动
BOOTPROTO=static #静态地址
1.3 设置NETWORKING,修改主机名
[root@hadoop0 ~]# vi /etc/sysconfig/network
NETWORKING=yes #启动时激活网络
HOSTNAME=hadoop0 #自定义主机名
1.4 删除70-persistent-net.rules文件
[root@hadoop0 ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules
#如果虚拟机克隆自另一台虚拟机,不删除该文件会产生如下错误
device eth0 does not seem to present
1.5 重启网络使配置生效
[root@hadoop0 ~]# service network restart
1.6 测试连接local是否畅通
[root@hadoop0 ~]# ping 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.021 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.021 ms
#畅通则持续显示上述内容
1.7 测试连接外网是否畅通
[root@hadoop0 ~]# ping baidu.com
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms
1.8 配置resolv.conf
1.8.1 如果ping外网ip地址畅通,ping域名出现如下错误
unknown host baidu.com
说明配置文件缺少nameserver
1.8.2 打开resolv.conf文件,添加如下内容
[root@hadoop0 ~]# vi /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.4.4
1.8.3 重新测试连接外网域名
[root@hadoop0 ~]# ping baidu.com
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms
64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=5.50 ms
#畅通则持续显示上述内容
#其中111.13.101.208是baidu.com解析后的ip地址,可能会有所不同
1.9 关闭防火墙
#如果测试外网不通,输入如下命令关闭防火墙
1.9.1 临时关闭防火墙
[root@hadoop0 ~]# service iptables off
1.9.2 永久关闭防火墙
[root@hadoop0 ~]# chkconfig iptables off
1.10 在hosts文件中添加主机名映射
1.10.1 打开/etc/hosts文件
[root@hadoop0 ~]# vi /etc/hosts
1.10.2 原有信息如下
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
1.10.3 在原有内容下添加如下内容
192.168.111.111 hadoop0
1.11 其他
1.11.1 安装vim
连接网络成功后,如果vim命令不存在,使用如下命令安装vim
[root@hadoop0 ~]# yum install -y vim*
1.11.2 使用xShell连接并操作虚拟机
网络连接成功后,可自行选择使用xShell连接并操作虚拟机,提供了比VMware原生界面更方便的操作
2. 设置SSH免密登录
2.1 生成密匙
[root@hadoop0 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2.2 查看生成的密匙
[root@hadoop0 ~]# cd ~/.ssh
[root@hadoop0 .ssh]# ls
id_dsa id_dsa.pub
#在~/.ssh目录下生成了id_dsa和id_dsa.pub两个文件
2.3 测试ssh连接本机
[root@hadoop0 ~]# ssh hadoop0
The authenticity of host 'hadoop0 (192.168.111.111)' can't be established.
RSA key fingerprint is xxx
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop0,192.168.111.111' (RSA) to the list of known hosts.
root@hadoop0's password:
# ssh连接本机仍需输入密码
2.4 登录自身免密
[root@hadoop0 ~]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
2.5 查看结果
[root@hadoop0 ~]# cd ~/.ssh
[root@hadoop0 .ssh]# ls
authorized_keys id_dsa id_dsa.pub
#~/.ssh目录在id_dsa和id_dsa.pub的基础上又新增了authorized_keys
2.6 验证ssh连接本机
[root@hadoop0 ~]# ssh hadoop0
# 如果设置成功,则无须再输入密码
3 安装JDK(在虚拟机hadoop0上)
3.1 在hadoop0上创建目录/usr/java/
[root@hadoop0 ~]# mkdir /usr/java
3.2使用xftp上传jdk-7u67-linux-x64.tar.gz
xftp左侧窗口为windows文件目录,右侧窗口为当前虚拟机linux文件目录;
从左侧窗口找到windows本地的jdk-7u67-linux-x64.tar.gz,
在右侧窗口进入/usr/java/目录,点击文件即可上传至虚拟机上指定的目录
如有问题可自行查询xShell和xFtp的使用方法
3.3 解压jdk-7u67-linux-x64.tar.gz到/usr/java
[root@hadoop0 java]# tar -zxvf jdk-7u67-linux-x64.tar.gz
3.4 配置java环境变量
3.4.1 编辑/etc/profile文件并添加如下内容
[root@hadoop0 ~]# vim /etc/profile
#jdk
export JAVA_HOME=/usr/java/jdk1.7.0_67
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
3.5 使/etc/profile配置生效
[root@hadoop0 ~]# source /etc/profile
3.6 查看java版本,检查环境变量是否生效
[root@hadoop0 ~]# java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
#正常显示如上信息则配置成功
4 在hadoop0上配置hadoop环境变量
4.1 创建/opt/test目录
[root@hadoop0 ~]# mkdir /opt/test
4.2 使用xftp上传hadoop-2.6.5.tar.gz到/opt/test/
4.3 将hadoop-2.6.5.tar.gz解压到文件夹/opt/test/
[root@hadoop0 ~]# tar -zxvf hadoop-2.6.5.tar.gz
4.4 配置HADOOP环境变量
[root@hadoop0 ~]# vim /etc/profile
#hadoop
export HADOOP_PREFIX=/opt/test/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
4.5使/etc/profile配置生效
[root@hadoop0 ~]# source /etc/profile
4.6 输入hadoop命令查看是否配置成功
[root@hadoop0 ~]# hadoop version
Hadoop 2.6.5
…
#出现上述版本号信息表示环境变量配置成功
5 配置hadoop单机伪分布运行环境(不使用yarn)
5.1在hadoop-env.sh上配置JAVA_HOME
[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/etc/hadoop/
[root@hadoop0 hadoop]# vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67
5.2 配置core-site.xml
[root@hadoop0 hadoop]# vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/test/hadoop/local</value>
</property>
</configuration>
5.3 配置hdfs-site.xml
[root@hadoop0 hadoop]# vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop0:50090</value>
</property>
</configuration>
5.4 配置slaves
5.4.1 将slaves文件原有内容替换为当前虚拟机名称,单机伪分布只配置一台
[root@hadoop0 hadoop]# vim slaves
hadoop0
5.5 启动hadoop伪分布集群
5.5.1 首次启动格式化namenode
[root@hadoop0 ~]# hdfs namenode -format
5.5.2 启动集群
[root@hadoop0 ~]# start-dfs.sh
5.5.3 查看进程
[root@hadoop0 ~]# jps
2051 SecondaryNameNode
1870 DataNode
1781 NameNode
2159 Jps
5.5.4 查看集群信息
[root@hadoop0 ~]# hadoop fs
5.5.5 查看根目录下的所有内容
[root@hadoop0 ~]# hdfs dfs -ls
5.6 上传文件测试单机伪分布集群(未使用yarn)
5.6.1 进入$HADOOP_HOME/share/hadoop/mapreduce/目录
[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/share/hadoop/mapreduce/
5.6.2 为方便测试直接在mapreduce目录生成测试文件
[root@hadoop0 mapreduce]# echo "hello world hello world hello" >> test.txt
# 或者使用语句生成包含更多内容的文本
for i in `seq 100000`;do echo “hello world hello world $i” >>test.txt;done
5.6.3上传test.txt文件到根目录
5.6.3.1 默认上传
[root@hadoop0 mapreduce]# hadoop fs -put test.txt /
5.6.3.2 也可以指定blocksize
[root@hadoop0 mapreduce]# hdfs dfs -D dfs.blocksize=1048576 -put test.txt /
5.6.4 运行wordcount测试程序
[root@hadoop0 mapreduce]#
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /test.txt /output
#其中output是在hdfs文件系统的根目录下创建的输出路径
5.6.5 查看mapreduce运行结果
[root@hadoop0 mapreduce]# hadoop dfs -text /output/part-*
hello 100003
world 200002
“hello 100000
6. 为hadoop单机伪分布添加yarn
6.1 分别在mapred-env.sh, yarn-env.sh上配置JAVA_HOME
6.1.1 进入$HADOOP_HOME/etc/hadoop目录
[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/etc/hadoop/
6.1.2 为mapred-env.sh添加JAVA_HOME
[root@hadoop0 hadoop]# vim mapred-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67
6.1.3 为yarn-env.sh添加JAVA_HOME
[root@hadoop0 hadoop]# vim yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67
6.2 配置mapred-site.xml
6.2.1复制一份mapred-site.xml.template并命名为mapred-site.xml
[root@hadoop0 hadoop]# cp mapred-site.xml.template mapred-site.xml
6.2.2 编辑mapred-site.xml
[root@hadoop0 hadoop]# vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
6.3 编辑yarn-site.xml
[root@hadoop0 hadoop]# vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6.4 启动配置了yarn的单机伪分布集群
6.4.1 启动hdfs
[root@hadoop0 ~]# start-dfs.sh
6.4.2 查看进程
[root@hadoop0 ~]# jps
2051 SecondaryNameNode
1870 DataNode
1781 NameNode
2159 Jps
6.4.3 启动yarn
[root@hadoop0 ~]# start-yarn.sh
6.4.4 查看进程
[root@hadoop0 ~]# jps
2051 SecondaryNameNode
1870 DataNode
1781 NameNode
2650 Jps
2291 NodeManager
2203 ResourceManager
# 增加了NodeManager和ResourceManager两个进程
6.5 在运行yarn的单机伪分布集群上测试wordcount程序
6.5.1 进入$HADOOP_HOME/share/hadoop/mapreduce/目录
[root@hadoop0 ~]# cd /opt/test/hadoop-2.6.5/share/hadoop/mapreduce/
6.5.2 运行wordcount测试程序,输出到/output2
[root@hadoop0 mapreduce]#
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /test.txt /output2
#运行时会首先看到如下信息
INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
6.5.3 查看mapreduce运行结果
[root@hadoop0 mapreduce]# hadoop dfs -text /output2/part-*
hello 100003
world 200002
“hello 100000
参考资料:
a). Hadoop数据分析平台实战——010hadoop介绍安装