和伪分布部署近似,就是略多一些步骤.
1.Linux环境搭建
学习环境:Linux(CentOS),VMware Workstation
为了节省时间,把原先伪分布模式下的环境克隆成三份
2.关闭各服务器的防火墙
(如果是伪分布模式克隆的可以省略)
2.1.Terminal : setup
2.2.选择防火墙设置,关闭防火墙(空格键选择, Tab 键移动)
2.3.测试防火墙是否关闭
Terminal : service iptables status
如果返回Firewall is not running.
表示成功
3.修改各服务器的 ip 地址 (使用静态 ip 地址,便于访问管理)
4.修改所有服务器的 机器名
4.1.Terminal: gedit /etc/sysconfig/network
4.2.修改 HOSTNAME=<机器名> 例如 HOSTNAME=hadoop0
4.3.重启服务器
5.修改所有服务器的 hosts
5.1.Terminal: gedit /etc/hosts
5.2.添加所有主机的
例如:
192.168.111.130 hadoop0
192.168.111.131 hadoop1
192.168.111.132 hadoop2
6.设置 ssh 自动登录
6.1.Terminal: gedit /etc/selinux/config
6.2.设置SELINUX=disabled
6.3.Terminal:cd ~/.ssh
6.4.清空原key:Terminal:rm -rf *
6.5.生成 key:Terminal: sshkeygen -t dsa
设置登录密码为空(多次回车确认即可)
6.6.Terminal:cat id_dsa.pub >>authorized_keys
注意:是authorized_keys
,不是authorized.keys
6.7.重启
6.8.验证本机是否成功
Terminal:ssh + <机器名>
如果不要求输入密码即为成功(首次执行可能要输入 yes
确认连接)
6.9.将本机的 key 传到其他服务器
ssh-copy-id -i /root/.ssh/id_dsa.pub hadoop2
ssh-copy-id -i /root/.ssh/id_dsa.pub hadoop1
6.10.可以先在一台服务器中汇总所有 key,然后复制到其他服务器
6.10.1.验证汇总是否成功
Terminal:cat authorized_keys
每各段尾有服务器的名称,例如root@hadoop1
,如果每台服务器的信息都有,则key 传送成功.
Terminal:ssh + <各机器名>
如果不要求输入密码即为成功
6.10.2.拷贝副本至其他服务器:
Terminal:scp /root/.ssh/authorized_keys hadoop1:/root/.ssh/
6.11.验证所有服务器是否成功
7.安装 jdk
7.1.下载 jdk( 注意不是 jre)(测试成功版本1.6.0_24)
7.2.如果使用虚拟机,可以将安装包复制到 Linux 中
7.3.修改权限
Terminal:chmod 777 jdk-6u24-linux-i586.bin
7.4.解压
Terminal:
mv jdk-6u24-linux-i586.bin /usr/local/
cd /usr/local/
./jdk-6u24-linux-i586.bin
7.5.改名
mv jdk1.6.0_24 jdk
7.6.配置环境变量
Terminal:gedit /etc/profile
7.7.添加:
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
7.8.脚本生效
Terminal:soure /etc/profile
7.9.测试
Terminal:java -version
8.在各服务器中安装 hadoop
8.1.下载 hadoop(测试成功版本 1.1.2)
8.2.如果使用虚拟机,可以通过复制安装包到 Linux 中
8.3.修改权限
chmod 777 hadoop-1.1.2.tar.gz
8.4.移动
mv hadoop-1.1.2.tar.gz /usr/local
8.5.解压,并重命名为 hadoop(方便使用)
tar -xvf hadoop-1.1.2.tar.gz
mv hadoop-1.1.2 hadoop
8.6.配置环境变量
gedit /etc/profile
添加:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
脚本生效
Terminal:soure /etc/profile
8.7.修改 hadoop 配置文件
cd /usr/local/hadoop/conf
分别在以下文件中添加内容
8.7.1.hadoop-env.sh
export JAVA_HOME=/usr/local/jdk/
8.7.2.core-site.xml (修改为主服务器名称)
fs.default.name
hdfs://hadoop0:9000
change your own hostname
hadoop.tmp.dir
/usr/local/hadoop/tmp
8.7.3.hdfs-site.xml
dfs.replication
1
dfs.permissions
false
8.7.4.mapred-site.xml(修改为主服务器名称)
mapred.job.tracker
hadoop0:9001
change your own hostname
8.7.5.masters(SecondaryNameNode服务器)配置
修改为SecondaryNameNode备份服务器的名称,建议和NameNode不同,例如hadoop1
8.7.6.slaves(TaskTracker\DataNode服务器)配置
例如:
hadoop1
hadoop2
8.8.启动 hadoop
8.8.1.清空所有服务器 hadoop 下的 logs 和 tmp 文件
8.8.2.第一次启动:在 hadoop0中格式化 namenode hadoop namenode -format
8.8.3.启动:在 hadoop0 中输入start-all.sh
8.8.4.验证:在各服务器中输入jps
,可以看到各进程
8.8.5.停止:在 hadoop0中输入: stop-all.sh
如果JobTracker
`DataNode\
TaskTracker\
SecondaryNameNode\
NameNode` 五个组件均启动,则验证成功.
注:如果缺少组件,一般为权限问题,把 hadoop 文件夹里的 temp\tmp 清空,把权限设置为777再重新启动 hadoop 试试.
9.使用 hadoop
和伪分布模式一样,在 java 中输入输出路径只要填主服务器(例如hadoop0)的即可.
完成撒花~~~