hadoop + zp 集群 搭建

分享 漂泊 ⋅ 于 2017-01-10 09:05:34 ⋅ 4843 阅读

在青牛的耐心指导下,把hadoop集群给搭建好了。不得不说青牛的功力很深厚啊。

此方案的流程:

1、常规JDK安装以及Linux系统配置
2、集群规划以及集群场景
3、ZooKeeper集群搭建
4、Hadoop2.6.0版本HA集群搭建
5、验证ZooKeeper、Hadoop等集群运行情况

主机名 操作系统 应用运行的进程
Master CentOS-6.6-x86_64 jdk hadoop NameNode DFSZKFailoverController(zkfc)
Slave1 CentOS-6.6-x86_64 jdk hadoop NameNode DFSZKFailoverController(zkfc)
Slave2 CentOS-6.6-x86_64 jdk hadoop ResourceManager
Slave3 CentOS-6.6-x86_64 jdk hadoop ResourceManager
Slave4 CentOS-6.6-x86_64 jdk zookeeper DataNode NodeManager JournalNode
Slave5 CentOS-6.6-x86_64 jdk zookeeper DataNode NodeManager JournalNode
Slave6 CentOS-6.6-x86_64 jdk zookeeper DataNode NodeManager JournalNode

安装步骤

(一)、基本安装

1.修改Linux主机名
2.修改IP(静态)
3.修改主机名和IP的映射关系
/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
4.关闭防火墙
5.ssh免登陆
6.安装JDK,配置环境变量等

(二)、集群安装

1.安装配置zooekeeper集群(在Slave4上)

1.1解压

tar -zxvf zookeeper-3.4.6.tar.g -C /home/chinahadoop
mv zookeeper-3.4.6/ zookeeper

1.2修改配置

cd /home/chinahadoop/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/home/chinahadoop/zookeeper/zkData
在最后添加:
server.1=Slave4:2888:3888
server.2=Slave5:2888:3888
server.3=Slave6:2888:3888
保存退出
然后创建一个tmp文件夹
mkdir -p /home/chinahadoop/zookeeper/zkData
再创建一个空文件
touch /home/chinahadoop/zookeeper/zkData/myid
最后向该文件写入ID
echo 1 > /home/chinahadoop/zookeeper/zkData/myid

1.3将配置好的zookeeper拷贝到其他节点(首先分别在Slave5、Slave6根目录:/home/chinahadoop/)

scp -r /home/chinahadoop/zookeeper/ Slave5:/home/chinahadoop/
scp -r /home/chinahadoop/zookeeper/ Slave6:/home/chinahadoop/
注意:修改Slave5、Slave6对应/home/chinahadoop/zookeeper/zkData/myid内容
Slave5:
echo 2 >/home/chinahadoop/zookeeper/zkData/myid
Slave6:
echo 3 >/home/chinahadoop/zookeeper/zkData/myid

2.安装配置hadoop集群(在Master上操作)

2.1解压

tar -zxvf hadoop-2.6.0.tar.gz -C /home/chinahadoop/

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

将hadoop添加到环境变量中
vim /etc/profile
export JAVA_HOME=
export HADOOP_HOME=/home/chinahadoop/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
记得 source /etc/profile
cd /usr/local/hadoop-2.6.0/etc/hadoop

2.2.1修改hadoo-env.sh

export JAVA_HOME=

2.2.2修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为masters -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://masters</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/chinahadoop/hadoop-2.6.0/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>Slave4:2181,Slave5:2181,Slave6:2181</value>
</property>
</configuration>
2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为masters,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>masters</value>
</property>
<!-- Master下面有两个NameNode,分别是Master,Slave1 -->
<property>
<name>dfs.ha.namenodes.masters</name>
<value>Master,Slave1</value>
</property>
<!-- Master的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.masters.Master</name>
<value>Master:9000</value>
</property>
<!-- Master的http通信地址 -->
<property>
<name>dfs.namenode.http-address.masters.Master</name>
<value>Master:50070</value>
</property>
<!-- Slave1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.masters.Slave1</name>
<value>Slave1:9000</value>
</property>
<!-- Slave1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.masters.Slave1</name>
<value>Slave1:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://Slave4:8485;Slave5:8485;Slave6:8485/masters</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/chinahadoop/hadoop-2.6.0/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.masters</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>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/chinahadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
2.2.4修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.2.5修改yarn-site.xml
<configuration>
<!-- 开启RM高可靠 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
    <value>cluster1</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>Slave2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>Slave3</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>Slave4:2181,Slave5:2181,Slave6:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
2.2.6修改slaves文件

Slave4
Slave5
Slave6

2.2.7配置免密码登陆

首先要配置Master到Slave1、Slave2、Slave3、Slave4、Slave5、Slave6的免密码登陆
在Master上生产一对钥匙
ssh-keygen -t rsa
将公钥拷贝到其他节点,包括自己
ssh-copy-id chinahadoop@Master
ssh-copy-id chinahadoop@Slave1
ssh-copy-id chinahadoop@Slave2
ssh-copy-id chinahadoop@Slave3
ssh-copy-id chinahadoop@Slave4
ssh-copy-id chinahadoop@Slave5
ssh-copy-id chinahadoop@Slave6
注意:两个namenode之间要配置ssh免密码登陆,别忘了配置Slave1到Master的免登陆
在Slave1上生产一对钥匙
ssh-keygen -t rsa
ssh-copy-id -i chinahadoop@Master
配置Slave2到Slave3、Slave4、Slave5、Slave6的免密码登陆
在Slave2上生产一对钥匙
ssh-keygen -t rsa

将公钥拷贝到其他节点

ssh-copy-id chinahadoop@Slave3
ssh-copy-id chinahadoop@Slave4
ssh-copy-id chinahadoop@Slave5
ssh-copy-id chinahadoop@Slave6
在Slave3上生产一对钥匙
ssh-keygen -t rsa
将公钥拷贝到其他节点
ssh-copy-id Slave4
ssh-copy-id Slave5
ssh-copy-id Slave6

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

scp -r /home/chinahadoop/hadoop-2.6.0/ Slave1:/home/chinahadoop
scp -r /home/chinahadoop/hadoop-2.6.0/ Slave2:/home/chinahadoop
scp -r /home/chinahadoop/hadoop-2.6.0/ Slave3:/home/chinahadoop
scp -r /home/chinahadoop/hadoop-2.6.0/ Slave4:/home/chinahadoop
scp -r /home/chinahadoop/hadoop-2.6.0/ Slave5:/home/chinahadoop
scp -r /home/chinahadoop/hadoop-2.6.0/ Slave6:/home/chinahadoop

注意:严格按照下面的步骤

以下启动过程,是青牛指导的。

hdfs HA 格式化启动过程:

1.启动 zookeeper

./bin/zkServer.sh start

2. 在 主master节点上 格式化zk

./bin/hdfs zkfc -formatZK

3.启动JN,3台

./sbin/hadoop-daemon.sh start journalnode

4.主节点上格式化namenode

./bin/hdfs namenode -format

5.启动主 namenode

./sbin/hadoop-daemon.sh start namenode

6.在备份namenode节点上启动namenode

./bin/hdfs namenode –bootstrapStandby
./sbin/hadoop-daemon.sh start namenode

7.两个namenode节点上启动 zkfc

./sbin/hadoop-daemon.sh start zkfc

8.启动 datanode

可以在主master节点上执行
./sbin/start-dfs.sh

由于当时对meta不了解,在大牛的指导下,把数据清了,然后再重新启动集群。然后集群就起成功了。

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-漂泊,http://hainiubl.com/topics/43
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter