您的位置:首页 > 运维架构 > Linux

虚拟机下32位CentOs版本的linux下hadoop2.4.1集群搭建(3个节点版本)

2015-10-30 21:55 976 查看
1.所用软件

1.1虚拟机软件:VMware-workstation-full-11.1.0.58002.1428919414
1.2.JDK:jdk-7u67-linux-i586.tar.gz
1.3.Zookeeper:zookeeper-3.4.5.tar.gz
1.4.Hadoop:hadoop-2.4.1.tar.gz


2.集群规划

主机名             IP               安装的软件
vincent01        10.1.34.211     jdk、hadoop
vincent02        10.1.34.212     jdk、hadoop
vincent03        10.1.34.213     jdk、hadoop

3.1.修改主机名
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=vincent01    ###
备注:其余2台仿照这种配置

3.2.修改ip
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"                ###根据每台虚拟机的情况选择ethX
BOOTPROTO="static"           ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="10.1.34.201"           ###  根据2中的规划设置ip
NETMASK="255.255.255.0"          ###
GATEWAY="10.1.34.254"            ###

3.3.修改主机名与ip之间的映射关系
vim /etc/hosts

10.1.34.211 vincent01
10.1.34.212 vincent02
10.1.34.213 vincent03

备注:每台机器上都应该如此配置

3.4.关闭防火墙

关闭防火墙       service iptables stop
关闭防火墙开机启动       chkconfig iptables off

3.5.设置SSH免登陆
首先要配置vincent01到vincent02、vincent03的免密码登陆
在vincent01上生产一对钥匙
进入到.ssh/文件夹
ssh-keygen -t rsa
将公钥拷贝到其他节点,包括自己
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent01
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent02
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent03
在vincent02上生产一对钥匙
ssh-keygen -t rsa
将公钥拷贝到其他节点,包括自己
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent01
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent02
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent03
在vincent03上生产一对钥匙
ssh-keygen -t rsa
将公钥拷贝到其他节点,包括自己
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent01
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent02
ssh-copy-id -i ~/.ssh/id_rsa.pub vincent03


4.安装JDK

4.1.在vincent01上安装JDK
4.1.1.解压jdk(备注:由于权限问题,统一在root用户下进行操作   su - root)
#创建文件夹
mkdir /usr/java
#解压
tar -zxvf /root/jdk-7u67-linux-i586.tar.gz -C /usr/java/

4.1.2.将java添加到环境变量中
vim /etc/profile
在文件最后添加
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
刷新配置
source /etc/profile
验证
java -version

4.2.将JDK文件与profile文件复制到其它2台机器上
scp -r /usr/java root@vincent02:/usr/
scp -r /etc/profile root@vincent02:/etc/profile

scp -r /usr/java root@vincent03:/usr/
scp -r /etc/profile root@vincent03:/etc/profile

在每个机器上执行命令  source /etc/profile   验证  java -version


5.安装Zookeeper集群在vincent01、vincent02、vincent03上

5.1.将zookeeper-3.4.5.tar拷贝到/root文件夹下

5.3.创建vincent文件夹
mkdir /usr/hadoop

5.3.解压zookeeper-3.4.5.tar
tar -zxvf /root/zookeeper-3.4.5.tar.gz -C /usr/hadoop/

5.4.修改配置
进入Zookeeper配置文件夹
cd /usr/hadoop/zookeeper-3.4.5/conf/
将zoo_sample.cfg文件拷贝一份,名为:zoo.cfg
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg文件
vim zoo.cfg
修改:dataDir=/usr/hadoop/zookeeper-3.4.5/tmp
在最后添加:
server.1=vincent01:2888:3888
server.2=vincent02:2888:3888
server.3=vincent03:2888:3888
保存退出
然后创建一个tmp文件夹
mkdir /usr/hadoop/zookeeper-3.4.5/tmp
再创建一个空文件
touch /usr/hadoop/zookeeper-3.4.5/tmp/myid
最后向该文件写入ID
echo 1 > /usr/hadoop/zookeeper-3.4.5/tmp/myid
5.5.将配置好的zookeeper拷贝到其他节点
scp -r /usr/hadoop/ vincent02:/usr/
scp -r /usr/hadoop/ vincent03:/usr/

注意:修改vincent02、vincent03对应/usr/hadoop/zookeeper-3.4.5/tmp/myid内容
vincent02:
echo 2 > /usr/hadoop/zookeeper-3.4.5/tmp/myid
vincent03:
echo 3 > /usr/hadoop/zookeeper-3.4.5/tmp/myid


6.安装配置hadoop集群

6.1解压

tar -zxvf hadoop-2.4.1.tar.gz -C /usr/hadoop/

6.2配置HDFS(hadoop2.0所有的配置文件都在$hadoop_HOME/etc/hadoop目录下)

将hadoop添加到环境变量中
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_67
export hadoop_HOME=/usr/hadoop/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$hadoop_HOME/bin:$hadoop_HOME/sbin

6.3.修改vincent2.0的配置文件全部在$hadoop_HOME/etc/hadoop下
cd /usr/hadoop/hadoop-2.4.1/etc/hadoop

6.3.1.修改hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67

6.3.2.修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.4.1/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>vincent01:2181,vincent02:2181,vincent03:2181</value>
</property>
</configuration>

6.3.3.修改hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>vincent01:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>vincent01:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>vincent02:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>vincent02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://vincent01:8485;vincent02:8485;vincent03:8485/ns1</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/hadoop/hadoop-2.4.1/journal</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

6.3.4.修改m
967c
apred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

6.3.5.修改yarn-site.xml
<configuration>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>vincent03</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

6.3.6.修改slaves(slaves是指定子节点的位置,因为要在vincent01上启动HDFS、在vincent03启动yarn,所以vincent01上的slaves文件指定的是datanode的位置,vincent03上的slaves文件指定的是nodemanager的位置)
vincent01
vincent02
vincent03


7.将配置好的hadoop拷贝到其他节点

7.1.将hadoop文件复制到其它2台机器上

scp -r /usr/hadoop/ vincent02:/usr/

scp -r /usr/hadoop/ vincent03:/usr/

scp -r /usr/hadoop/vincent-2.4.1/ root@vincent04:/usr/hadoop/

scp -r /usr/hadoop/vincent-2.4.1/ root@vincent05:/usr/hadoop/

scp -r /usr/hadoop/vincent-2.4.1/ root@vincent06:/usr/hadoop/

7.2.将profile文件复制到其它2台机器上

scp -r /etc/profile root@vincent02:/etc/profile

scp -r /etc/profile root@vincent03:/etc/profile

7.3.在每个机器上执行命令  source /etc/profile


8.格式化

8.1.启动zookeeper集群(分别在vincent01、vincent02、vincent03上启动zk)
cd /usr/hadoop/zookeeper-3.4.5/bin/
./zkServer.sh start
查看状态:一个leader,两个follower
./zkServer.sh status

8.2.启动journalnode在vincent01上执行
cd /usr/hadoop/hadoop-2.4.1/sbin/
hadoop-daemons.sh start journalnode
运行jps命令检验,vincent01、vincent02、vincent03上多了JournalNode进程

8.3.格式化HDFS
在vincent01上执行命令:
hdfs namenode -format
格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/hadoop/hadoop-2.4.1/tmp,然后将/hadoop/hadoop-2.4.1/tmp拷贝到vincent02的/usr/hadoop/hadoop-2.4.1/下。
scp -r tmp/ vincent02:/usr/hadoop/hadoop-2.4.1/

8.4.格式化ZK(在vincent01上执行即可)
hdfs zkfc -formatZK

8.5.启动HDFS(在vincent01上执行)
sbin/start-dfs.sh

8.6.启动YARN在vincent03上执行start-yarn.sh
sbin/start-yarn.sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop集群