Hadoop
1. 集群环境搭建
Jdk的安装与配置
1:安装虚拟机VMware,并安装一个Linux系统(比如CentOS64);
2:安装Hadoop之前先安装jdk(因为hadoop是用java写的,所以需要java的编译环境);
--|下载linux版本的jdk到安装目录例如:/home/user/resources/jdk-1.8.0.tar.gz
--|解压缩到当前目录下$> tar -zxvf jdk.1.8.0 ./
--|创建符号链接$>ln -s /home/user/resources/jdk-1.8.0 jdk
--|配置环境变量 $>sudo nano /etc/profile
....
export JAVA_HOME=/home/user/resourcces/jdk
exprot PATH=$PATH:$JAVA_HOME/bin
--|是配置的环境变量立即生效$>source /etc/profile
--|测试jdk是否配置成功,进入任意目录$>java -version
Hadoop的安装与配置
1:下载Linux版Hadoop源码包到resources目录下
2:解压缩源码包到当前目录$>tar -zxvf hadoop-2.7.2.tar.gz ./
3:移动该解压后的文件到/soft/下(本人习惯问题,你也可以不移动或放到你想放的
置)$>mv ./hadoop-2.7.2 /soft/
4:创建符号链接$>ln -s /soft/hadoop-2.7.2 hadoop
5:配置hadoop的环境变量$>sudo nano /ect/profile
.......
export HADOOP_HOME=/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
6:让配置立即生效$>source /etc/profile
7:验证配置是否成功,进入任意目录测试$>hadoop
8:在hadoop中指定jdk安装路径
$>sudo nano /soft/hadoop/etc/hadoop/hadoop-env.sh
找到# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
改为
export JAVA_HOME=/home/user/resources/jdk
保存退出
配置hadoop核心文件
进入核心配置文件所在的位置$>ls /soft/hadoop/etc/hadoop
1:core-site.xml
编辑$>sudo core-site.xml
<configuration>
<!--默认文件系统的名称,根据自己的文件系统名称填写-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
<!--hadoop临时文件目录所在的位置,属性名固定为hadoop.tmp.dir,属性值用户可以自己填写指定的位置-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/szg/hadoop</value>
</property>
</configuration>
2:hdfs-site.xml
编辑$>sudo nano hdfs-site.xml
<configuration>
<!--文件副本数,默认是3最大也是3-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
3:mapred-site.xml
这个稍微特殊一点,这个文件是没有的需要手动创建(复制一个改一下名称即可)
$>sudo cp ./mapred-site.xml.template mapred-site.xml
编辑$>sudo nano mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4:yarn-site.xml
编辑$>sudo nano yarn-site.xml
<configuration>
<!--名称节点所在的主机名 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
至此四大核心文件配置完成。。。
节点名称和网络配置
首先网络请选NAT模式
1:Linux系统默认主机名称为localhost因为要配置hadoop集群所以要修改主机名称
--|$>sudo nano /etc/sysconfig/network
编辑NETWORKING=yes
HOSTNAME=master
保存退出
--|使用$>hostname master确认修改生效
--|以上配置会在下次启动是复原,为了避免复原需要继续配置
编辑$>sudo nano /etc/hostname
添加master
保存退出即可便永久修改主机名
2:网络配置
配置静态ip
$>sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
编辑
DEVICE="eth0"
BOOTPROTO="static" #将原来的值“dhcp”改为“static”
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
//这个不用改
UUID="b68b1ef8-13a0-4d11-a738-1ae704e6a0a4"
IPADDR=192.168.1.10 #你需要定义的IP地址
#以下两个的值如果不清楚的话,可以打开你本地的电脑,--》控制面板\所有控制面板项\网络和共享中心\本地连接\详细信息
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.1 #默认网关,
保存退出
重启网络服务
$>sudo service network restart
3:ip关联主机名
--|$>sudo nano /etc/resolv.conf
添加你的网关servername 192.168.1.1保存退出。
4:关闭防火墙
至此网络配置完成。。。
集群搭建工作
以操作都是在master上操作,下面开始搭建集群
1:将master虚拟机克隆三份供练习(以上配置的副本数量为3)。
2:将克隆的3台虚拟机ip分别修改为192.168.1.11,192.168.1.12,192.168.1.13
3:修改名称为slave01,slave02,slave03
----------------------------------以上操作同master-------------------------------------
4:在master和slave中配置虚拟机
$>sudo nano /etc/hosts
编辑192.168.1.10 master
192.168.1.11 slave01
192.168.1.12 slave02
192.168.1.13 slave03
保存退出
设置免密钥登录
1.删除所有主机上的/home/user/.ssh/*
2.在master主机上生成密钥对
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
3.将master的公钥文件id_rsa.pub远程复制到202 ~ 204主机上。
并放置/home/centos/.ssh/authorized_keys
$>scp id_rsa.pub szg@master:/home/user/.ssh/authorized_keys
$>scp id_rsa.pub szg@slave01:/home/user/.ssh/authorized_keys
$>scp id_rsa.pub szg@slave02:/home/user/.ssh/authorized_keys
$>scp id_rsa.pub szg@slave03:/home/user/.ssh/authorized_keys
Hadoop集群的启动和停止
1:格式化nameNode
$>hadoop namenode -format
2:启动hadoop集群
$>start-all.sh(建议使用start-dfs.sh和strat-yarn.sh)
3:停止hadoop集群
$>stop-all.sh(建议使用stop-dfs.sh和stop-yarn.sh)
验证Hadoop
方式1:在master节点使用jps查看进程,应该有以下四个进程
3588 SecondaryNameNode
5975 Jps
3389 NameNode
3743 ResourceManager
在slave节点使用jps查看进程,应该有以下三个进程
4054 Jps
2633 DataNode
2733 NodeManager
方式2:使用webUI
在火狐浏览器地址栏中输入192.168.1.10:50070(masterIP+50070端口)访问
Datanodes中会出现我们配置的slave01,slave02,slave03节点
方式3:执行mapreduce程序
以上两种方式验证不一定说明开发环境搭建成功,能执行一个程序才算成功!
执行程序第一个mapreduce程序,验证开发环境
$>cd /soft/hadoop/etc/share /hadoop/mapreduce
$> ls 会看到hadoop-mapreduce-examples-2.7.2.jar
执行该程序
$>hadoop jar hadoop-mapreduce-examples-2.7.2.jar pi 10 10
结果是3.2000000000000000000000000
如果执行成功就说明hadoop集群搭建成功
问题总结
1:如果进程正常启动但在webUI中看不到服役的DataNode节点
解决办法:
检查防火墙是否关闭
$>sudo service iptables status
$>sudo service iptables stop
2:CentOS重启后/etc/resolv.conf被还原
解决办法:
1:停止Network Manager服务
$>sudo service NetworkManager stop
2:重启网络服务
$>/etc/init.d/network restart
3:彻底废掉Network Manager
$>sudo Chkconfig NetworkManager off