Hadoop1.0.4集群安装
Hadoop集群的安装
一 安装计划
虚拟机:VMware9.0
操作系统:CentOS5.8
Hadoop:Hadoop1.0.4
网段为:192.168.201.1
三个节点分别为:
Master:192.168.201.11
Slave1: 192.168.201.12
Slave2:192.168.201.13
Java:jdk7u
工具:SecureCRT
二 虚拟机的安装及配置
2.1 虚拟机的安装就不详述了
三 CentOS的安装及配置
3.1 安装也不详述
3.2 配置
3.2.1 首先将虚拟机的网卡设置为host-only,
物理机器的虚拟网卡VMnet1的IP设置为192.168.201.1,以后建立的虚拟集群都在这个网段
3.2.2 启动系统,进入root用户
3.2.3 CentOS刚安装完毕,要进行初始化设置,使得一些基本命令可以直接使用,不用再输入绝对路径
⑴ 配置/etc/profile文件,
在文件末加入以下语句:
PATH=$PATH:/sbin #在PATH变量后追加/sbin目录
export PATH=$PATH:/sbin#设置变量为全局的
⑵ 配置/home/user/.bash_profile文件,
在PATH后面添加/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin这几个路径。
3.2.4 编辑/etc/sudoers文件,使得普通用户可以以root权限执行命令,就是命令前可以使用“sudo”
⑴ 添加文件的写权限。chmod u+w /etc/sudoers
⑵ 编辑/etc/sudoers文件。在"root ALL=(ALL) ALL"下面添加"user ALL=(ALL) ALL"(这里的user是用户名),退出
⑶ 注释掉:Defaults requiretty所在的行。即:#Defaults requiretty
⑷ 撤销文件的写权限。chmod u-w /etc/sudoers。
3.2.5 编辑/etc/sysconfig/network-scripts/ifcfg-eth0,设置网卡的为静态获取IP,并设置IP地址
注:这个我在安装CentOS时已经配置为静态IP,如果同学安装的时候没有配置为静态的,可以配置此
文件配置,具体不在详述
3.2.6 编辑/etc/sysconfig/network和/etc/hosts设置机器名
⑴ hostname=master
⑵ 修改为
127.0.0.1 localhost
192.168.201.11 master
192.168.201.12 slave1
192.168.201.13 slave2
3.2.7 重启虚拟机
3.2.8 可以看到sudo已经可以使用了,ifconfig也可以直接用了,主机名也已经改了
四 JDK安装
4.1 SecureCRT的使用
4.1.1 启动SecureCRT(安装不详述)
4.1.2 连接192.168.201.11
4.1.3 打开SecureFX,将JDK复制到虚拟机中
4.2 将压缩包解压
4.3 编辑/etc/profile文件,加入以下几行 --注jdk的具体安装位置和版本自行修改
export JAVA_HOME=/home/elvis/jdk1.7.0_17
export JRE_HOME=/home/elvis/jdk1.7.0_17/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
4.4 source /etc/profile --使配置生效
4.5 java -version
可以看到java的版本信息,安装成功
五 虚拟集群架设流程
5.1 连接到虚拟机master(192.168.201.11)
5.2 查看一下开机自动启动的服务,关闭其中一些不必要的,可以加快开机速度并减少内存占用
有很多服务没必要开启
chkconfig --list
需要关闭的服务有如下几个:
echo "123456" | sudo -S 这个前缀可以使得普通用户不必在使用root权限
的时候再输入密码了
echo "123456" | sudo -S chkconfig sendmail off
echo "123456" | sudo -S chkconfig bluetooth off
echo "123456" | sudo -S chkconfig NetworkManager off
echo "123456" | sudo -S chkconfig acpid off
echo "123456" | sudo -S chkconfig apmd off
echo "123456" | sudo -S chkconfig dund off
echo "123456" | sudo -S chkconfig pand off
echo "123456" | sudo -S chkconfig capi off
echo "123456" | sudo -S chkconfig cups off
echo "123456" | sudo -S chkconfig iptables off
echo "123456" | sudo -S chkconfig ip6tables off
echo "123456" | sudo -S chkconfig irda off
echo "123456" | sudo -S chkconfig isdn off
echo "123456" | sudo -S chkconfig kudzu off
echo "123456" | sudo -S chkconfig lm_sensors off
echo "123456" | sudo -S chkconfig mdmonitor off
echo "123456" | sudo -S chkconfig pcscd off
5.3 通过SecureFX将一些必要的软件copy到虚拟机里 --这里主要是hadoop软件
5.4 关闭虚拟机
5.5 将虚拟机的镜像文件copy成2个副本,一共3个虚拟机
注意:如果你的本本硬盘空间和物理内存都比较充裕的话可以多建立一些节点
5.6 一个虚拟机副本copy完并启动之后,vmware会重新给其网卡分配一个mac地址,所以需要修改mac地址,IP也要改
5.6.1 ifconfig 查看本机eth0网卡的IP和mac地址
5.6.2 编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改mac地址和IP地址
5.7 重启网卡
sudo service network restart
5.8 编辑/etc/sysconfig/network机器名
5.9 重启
注:其他节点也类似就不一一详述
六 hadoop1.0.4部署流程
6.1 启动集群master,slave1,slave2
6.2 实现SSH无密码登陆
6.2.1 实现无密码本机登录master
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。这两个是成对出现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_key s文件 ) :
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
实验:ssh localhost hostname
还是要输入密码,一般这种情况都是因为目录或文件的权限问题,看看系统日志,确实是权限问题,
.ssh下的authorized_keys权限为600,其父目录和祖父目录应为755,
查看系统日志:sudo tail /var/log/secure -n 20
解决方法为:chmod 755 .
chmod 755 .ssh
chmod 600 .ssh/authorized_keys
在其他机器上同样操作
6.2.2 实现无密码登录其他机器
把 slave1和slave2里的id_dsa.pub都追加到授权 key 里面
ssh slave1 cat /home/elvis/.ssh/id_dsa.pub >> .ssh/authorized_keys
将各节点authorized_keys文件合并并覆盖至每个节点
scp authorized_keys slave1:/home/elvis/.ssh/authorized_keys
做技术就是谨慎,还是在全面检验一遍:ssh 192.168.201.12 hostname
(每个节点上都需要验证)
6.3 修改/usr/local目录的权限,命令:sudo chmod 777 /usr/local/
将hadoop的tar包copy到/usr/local/下
(master节点)copy到这个目录下并且解压
6.4 查看 cat /etc/hosts
192.168.201.12 slave1
192.168.201.13 slave2
6.5 配置 conf/masters 和 conf/slaves
在hadoop文件目录里
conf/masters
192.168.201.11
conf/slaves
192.168.201.12
192.168.201.13
6.6 配置 conf/hadoop-env.sh
加入
export JAVA_HOME=/home/elvis/soft/jdk1.7.0_17
6.7 配置 conf/core-site.xml
加入
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.201.11:9000</value>
</property>
6.8 配置 conf/hdfs-site.xml
加入
<property>
<name>dfs.http.address</name>
<value>192.168.201.11:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
6.9 配置conf/mapred-site.xml
加入
<property>
<name>mapred.job.tracker</name>
<value>192.168.201.11:8012</value>
</property>
6.10 建立相关的目录
/usr/local/hadoop/ //hadoop数据和namenode目录
6.11 建立相关的目录其他的几个节点也是同样
6.12 将hadoop文件远程copy到其他节点(这样前面的配置就都映射到了其他节点上),
命令为:scp -r hadoop-x.xx.x 192.168.201.22:/usr/local/
6.13 格式化Active master(192.168.201.11)
命令:bin/hadoop namenode -format
6.14 启动集群 ./start-all.sh
6.15 现在集群启动起来了,看一下,命令:bin/hadoop dfsadmin -report
2个datanode,打开web看一下
浏览器输入:192.168.201.11:50070
命令:jps
6.16集群安装完成!