1 准备工作
1. 安装oracle virtualbox
2. 下载centos 6.5
http://mirrors.163.com/centos/6.5/isos/i386/
3. JRE jdk7u51
4. 虚拟机网络选择-》桥接方式
5. C:\Windows\System32\drivers\etc\hosts
虚拟机设置
1,修改主机名和网络所需的网关
/etc/sysconfig/network
GATEWAY = 192.168.1.1
2, 修改eth0(修改为静态IP)
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.191
3, 关闭iptables 防火墙
service iptables stop
chkconfig iptables off
4,关闭selinux
/etc/selinux/config
5,配置163 yum源
http://mirrors.163.com/.help/centos.html(根据该连接给出的文档配置就可以)
运行yummakecache生产本地缓存
6,配置dns
/etc/resolv.conf
nameserver 61.139.2.69(任意的DNS服务器IP)
7,安装jdk rpm的或者tar.gz
rpm -ivh
tar–zxvf jdk压缩名
8, 配置主机名的反向解析
/etc/hosts
192.168.1.191 hadoop1
9, vi .bashrc或修改 /etc/profile 文件(配置环境变量,然后sourceprofile)
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
2 hadoop基本安装
2.1 添加ssh免密码登陆
2.1.1 执行如下命令生成密钥
$ ssh-keygen -tdsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
命令执行完之后可以在当前用户目录下查看.ssh文件夹下的文件
[root@hadoop1 .ssh]# ls
authorized_keys id_dsa id_dsa.pub known_hosts
2.1.2然后测试 ssh hadoop(当前主机名),如果可以直接登陆则配置成功
[root@hadoop1 hadoop]# ssh hadoop1
Last login: Sat Sep 20 22:30:52 2014 from hadoop1
2.1.3 配置成功后再将密钥同步到集群中的其他机器上使用命令
scp ~/.ssh/ authorized_keys hadoop2:~/.ssh/ authorized_keys
scp ~/.ssh/ authorized_keys hadoop3:~/.ssh/authorized_keys
这样主机hadoop1就能免密码登陆到主机hadoop1和hadoop2中了
2.2 安装hadoop
2.2.1 将下载的hadoop安装包上传到linux系统中执行如下命令安装
tar –zxvfhadoop-2.2.0.tar.gz
2.2.2 配置环境变量
编辑/etc/profile 文件,然后执行source /etc/profile,是环境变量立即生效
export JAVA_HOME=/usr/java/jdk1.7.0_60
export HADOOP_HOME=/usr/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2.2.3 配置hadoop变量
修改/etc/hadoop/etc/hadoop/ hadoop-env.sh
# set to the root of your Java installation
exportJAVA_HOME=/usr/java/jdk1.7.0_60# Assuming your installation directory is /usr/hadoop
export HADOOP_PREFIX=/usr/hadoop
3 hadoop HA配置
参照官方文档http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-site/HDFSHighAvailabilityWithQJM.html
3.1 修改hdfs-site.xml 文件
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>ns1,ns2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.ns1</name>
<value>hadoop1:4001</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.ns1</name>
<value>hadoop1:4011</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.ns2</name>
<value>hadoop2:4001</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.ns2</name>
<value>hadoop2:4011</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/root/data/journal/node/local/data</value>
</property>
注意:官网文档配置的dfs.ha.fencing.ssh.private-key-files的属性值是/root/.ssh/id_rsa,我使用的dsa的免密码登陆所以改为 /root/.ssh/id_dsa
3.2 修改core-site.xml 文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
3.3 配置好之后将配置文件同步到集群中的其他机器上然后按步骤执行
第一步:在每台机器上执行journalnode
Hadoop-daemon.sh start journalnode
第二步在hadoop1上格式化一个namenode节点
Hdfs namenode –format
第三步:在hadoop1上初始化journalnode的共享编辑
Hdfs namenode- initializeSharedEdits
第四步在hadoop1上启动namenode
第五步在没有格式化的namenode节点上即hadoop2执行
hdfs namenode –bootstrapStandby
第六步:启动hadoop2上的namenode
上述步骤执行完整之后在浏览器中测试可以看到 hadoop1和hadoop2都是standby状态
将standby状态转为active状态在对应主机上执行命令
hdfs haadmin – transitionToActive ns1
至此手动切换namenode的配置完成
配置完成之后启动和关闭命令
start-dfs.sh和stop-dfs.sh
3.3 配置zookpper使namenode自动切换
1 首先配置好zookeper的集群配置参考官网文档
http://zookeeper.apache.org/doc/r3.3.6/zookeeperStarted.html
2 配置hdfs-site.xml
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
3配置core-site.xml
<property>
<name>ha.zookeeper.quorum</name>
<value>zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181</value>
</property>
4 格式化ZooKeeper
$ hdfs zkfc –formatZK
5 启动hadoop Ha集群
start-dfs.sh
至此 自动切换namenode节点完成