hadoop2.7-hbase1.0.1-zookeeper3.4.5配置 ha

 http://image.baidu.com/search/detail?z=0&ipn=d&word=%E4%BA%91%E8%AE%A1%E7%AE%97%20logo&step_word=&pn=14&spn=0&di=0&pi=&tn=baiduimagedetail&istype=&ie=utf-8&oe=utf-8&cs=1883962502%2C3516267280&os=4221692887%2C51351351&adpicid=0&fr=ala&sme=&cg=&bdtype=14&simics=3393428534%2C3089607575&objurl=http%3A%2F%2Fpic34.nipic.com%2F20131029%2F2531170_140120087000_2.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bgtrtv_z%26e3Bv54AzdH3Ffi5oAzdH3Flal9aaa_z%26e3Bip4s&gsm=0&cardserver=1

数据中心712台服务器实施方案

序号

ip

主机名

软件安装

进程

备注

1

192.168.3.130

root01

Jdk

Hadoop

hbase

NameNode

DFSZKFailoverController(zkfc)

Hmaster

必选

2

192.168.3.132

root02

Jdk

Hadoop

hbase

NameNode

DFSZKFailoverController(zkfc)

Hmaster

必选

3

192.168.3.134

root03

Jdk

Hadoop

ResourceManager

必选

4

192.168.3.136

root04

Jdk

Hadoop

ResourceManager

 

必选

5

192.168.3.138

root05

Jdk

Hadoop

Zookeeper

Hbase

DataNode

NodeManager

JournalNode

QuorumPeerMain

HRegionServer

必选

6

192.168.3.139

root06

Jdk

Hadoop

Zookeeper

Hbase

DataNode

NodeManager

JournalNode

QuorumPeerMain

HRegionServer

必选

7

192.168.3.140

root07

Jdk

Hadoop

Zookeeper

hbase

DataNode

NodeManager

JournalNode

QuorumPeerMain

HRegionServer

必选

8

192.168.3.142

root08

Jdk

Hadoop

Zookeeper

hbase

DataNode

NodeManager

JournalNode

QuorumPeerMain

HRegionServer

必选

9

192.168.3.144

root09

Jdk

Jboss

tomcat

serviceMix

应用集群

有应用,必选,反之可选

10

192.168.3.146

root10

Jdk

Jboss

tomcat

serviceMix

应用集群

有应用,必选,反之可选

11

192.168.3.148

root11

MySQL

 

可选

12

192.168.3.150

root12

MySQL

 

可选

 

准备工作(centos6.5 64Bits)

1. 修改Linux主机名

Vim /etc/sysconfig/network

添加HOSTNAME=root01

2.修改IP

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改IPADDR=192.168.3.130

3. 修改主机名和IP的映射关系

Vim /etc/hosts

添加

192.168.3.130 root01

192.168.3.132 root02

192.168.3.134 root03

192.168.3.136 root04

192.168.3.138 root05

192.168.3.140 root06

。。。

4.关闭防火墙

service iptables stop

chkconfig iptables off

5.停闭selinux

vim /etc/sysconfig/selinux

SELINUX=disebles

6.ssh免登陆

ssh-keygen –t rsa //每台产生公钥和私钥

192.168.3.130上:

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

scp ~/.ssh/authorized_keys [email protected]:/root/.ssh/

192.168.3.132上:

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

scp ~/.ssh/authorized_keys [email protected]:/root/.ssh/

7. 创建目录和准备软件

 ./runall.sh "mkdir -p /myhome/usr/"

 ./runall.sh "mkdir -p /myhome/root/"

 ./runall.sh "mkdir -p /myhome/tmp/"

 ./runall.sh "mkdir -p /myhome/src/"

 ./runall.sh "mkdir -p /myhome/logs/"

 ./runall.sh "mkdir -p /myhome/dev/"

 ./runall.sh "mkdir -p /myhome/bin/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/yarn/local/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/yarn/logs/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/logs/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/journal/zjenterprise/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/hdfs/name/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/hdfs/data/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/tmp/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/journal/"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/hdfs/pid /"

 ./runall.sh "mkdir -p /myhome/usr/hadoop/hdfs/user /"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/yarn/local/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/logs/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/yarn/logs/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/journal/zjenterprise/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/hdfs/name/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/hdfs/data/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/tmp/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/journal/"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/hdfs/pid /"

 ./runall.sh "chmod -R 700 /myhome/usr/hadoop/hdfs/user /"

 ./runall.sh "rm -rf /myhome/hbase/logs/*"

 ./runall.sh "rm -rf /myhome/usr/hadoop/logs/*"

 mkdir -p /myhome/usr/zookeeper/data/

 touch /myhome/usr/zookeeper/data/myid

echo 1 > /myhome/usr/zookeeper/data/myid

 export HADOOP_PID_DIR=/myhome/usr/hadoop/hdfs/pid

 export HADOOP_LOG_DIR=/myhome/usr/hadoop/logs

 export HADOOP_SECURE_DN_USER=/myhome/usr/hadoop/tmp/

 export HADOOP_HDFS_USER=user

 

8. 安装JDK,配置环境变量等

vim /etc/profile

BASE_HOME=/myhome/usr

JAVA_HOME=/usr/java/jdk1.8.0_20

CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

M3_HOME=$BASE_HOME/maven

PATH=$PATH:$M3_HOME/bin

ANT_HOME=$BASE_HOME/ant

PATH=$PATH:$ANT_HOME/bin

FINDBUGS_HOME=$BASE_HOME/findbugs

PATH=$PATH:$FINDBUGS_HOME/bin

PROTOBUF_HOME=$BASE_HOME/protobuf

PATH=$PATH:$PROTOBUF_HOME/bin

ZOOKEEPER_HOME=$BASE_HOME/zookeeper

PATH=$PATH:$ZOOKEEPER_HOME/bin

HADOOP_HOME=$BASE_HOME/hadoop

HADOOP_CLASSPAT=$HADOOP_HOME/lib

PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

HBASE_HOME=$BASE_HOME/hbase

PATH=$PATH:$HBASE_HOME/bin

#SQOOP_HOME=$BASE_HOME/sqoop

#PATH=$PATH:$SQOOP_HOME/bin

#PIG_HOME=$BASE_HOME/pig

#PATH=$PATH:$PIG_HOME/bin

#HIVE_HOME=$BASE_HOME/hive

#PATH=$PATH:$HIVE_HOME/bin

#VIRO_HOME=$BASE_HOME/viro

#PATH=$PATH:$VIRO_HOME/bin

#JBOSS_HOME=$BASE_HOME/jboss

#PATH=$PATH:$JBOSS_HOME/bin

#CATALINA_HOME=$BASE_HOME/tomcat

#PATH=$PATH:$CATALINA_HOME/bin

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_PREFIX=$HADOOP_HOME

export HADOOP_MAPRED_HOMD=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_LOG_DIR=$HADOOP_HOME/logs

export YARN_LOG_DIR=$HADOOP_LOG_DIR

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HBASE_CONF_DIR=$HBASE_HOME/hbase/conf

#export PIG_HADOOP_VERSION=20

#export PIG_CLASSPATH=$HADOOP_HOME/hadoop/ conf

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

export HBASE_HOME

export JAVA_HOME

export CLASSPATH

export M3_HOME

export ANT_HOME

export FINDBUGS_HOME

export PROTOBUF_HOME

export HADOOP_HOME

export ZOOKEEPER_HOME

#export SQOOP_HOME

#export PIG_HOME

#export HIVE_HOME

#export VIRO_HOME

export PATH

9. 软件准备,下载,解压,编译,建目录等------(注意指定版本)

1. jdk

2. hadoop(有原码修改)

3. hbase

4. zookeeper

5. redis

5. storm

5. kafka

5. scala

core-site.xml

<configuration>

 <!-- 指定hdfsnameservicemasters -->

 <property>

 <name>fs.defaultFS</name>

 <value>hdfs://masters</value>

 </property>

 <!-- 指定hadoop临时目录-->

 <property>

 <name>hadoop.tmp.dir</name>

 <value>/myhome/usr/hadoop/tmp</value>

 </property>

 <property>

<name>io.file.buffer.size</name>

 <value>131072</value>

 </property>

 <property>

 <name>hadoop.native.lib</name>

 <value>ture</value>

 </property>

 <property>

 <name>hadoop.proxyuser.hduser.hosts</name>

 <value>*</value>

 </property>

 <property>

 <name>hadoop.proxyuser.hduser.groups</name>

 <value>*</value>

 </property>

 <!-- 指定zookeeper地址-->

 <property>

 <name>ha.zookeeper.quorum</name>

 <value>root04:2181,root05:2181,root06:2181,root07:2181,root08:2181</value>

 </property>

 </configuration>

 hdfs-site.xml

<configuration>

 <!--指定hdfsnameservicemasters,需要和core-site.xml中的保持一致-->

 <property>

 <name>dfs.nameservices</name>

 <value>masters,ns1,ns2,ns3</value>

 </property>

 <!-- Master下面有两个NameNode,分别是MasterSlave1 -->

 <property>

 <name>dfs.ha.namenodes.masters</name>

 <value>root01,root02</value>

 </property>

 <!-- MasterRPC通信地址-->

 <property>

 <name>dfs.namenode.rpc-address.masters.root01</name>

 <value>root01:9000</value>

 </property>

 <!-- Masterhttp通信地址-->

 <property>

 <name>dfs.namenode.http-address.masters.root01</name>

 <value>root01:50070</value>

 </property>

 <!-- Slave1RPC通信地址-->

 <property>

 <name>dfs.namenode.rpc-address.masters.root02</name>

 <value>root02:9000</value>

 </property>

 <!-- Slave1http通信地址-->

 <property>

 <name>dfs.namenode.http-address.masters.root02</name>

 <value>root02:50070</value>

 </property>

 <!-- 指定NameNode的元数据在JournalNode上的存放位置-->

 <property>

 <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://root04:2181,root05:2181,root06:2181,root07:2181,root08:2181/masters</value>

 </property>

 <!-- 指定JournalNode在本地磁盘存放数据的位置-->

 <property>

 <name>dfs.journalnode.edits.dir</name>

 <value>/myhome/usr/hadoop/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>/root/.ssh/id_rsa</value>

 </property>

 <!-- 配置sshfence隔离机制超时时间-->

 <property>

 <name>dfs.ha.fencing.ssh.connect-timeout</name>

 <value>30000</value>

 </property>

 </configuration>

mapred-site.xml

<configuration>

 <!-- 指定mr框架为yarn方式-->

 <property>

 <name>mapreduce.framework.name</name>

 <value>yarn</value>

 </property>

 <property>

 <name>mapreduce.jobhistory.address</name>

 <value>root01:10020</value>

 <description>MapReduce JobHistoryServer IPC host:port</description>

 </property>

 <property>

 <name>mapreduce.jobhistory.webapp.address</name>

 <value>root01:19888</value>

<description>MapReduce JobHistoryServer Web UI host:port</description>

 </property>

 </configuration>

 yarn-site.xml

 <configuration>

 <!-- 开启RM高可靠-->

 <property>

 <name>yarn.resourcemanager.ha.enabled</name>

 <value>true</value>

 </property>

 <!-- 指定RMcluster id -->

 <property>

 <name>yarn.resourcemanager.cluster-id</name>

 <value>RM_HA_ID</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>root02</value>

 </property>

 <property>

 <name>yarn.resourcemanager.hostname.rm2</name>

 <value>root03</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>root04:2181,root05:2181,root06:2181,root07:2181,root08:2181</value>

 </property>

 <property>

 <name>yarn.nodemanager.aux-services</name>

 <value>mapreduce_shuffle</value>

 </property>

 </configuration>

slaves

root04

root05

root06

..

ssh root03

cd /myhome/usr

 ./runzk.sh “/myhome/usr/zookeeper/zkServer.sh start”

 ./runzk.sh “/myhome/usr/zookeeper/zkServer.sh status

 ./runzk.sh “/myhome/usr/hadoop/sbin/hadoop-daemon.sh start journalnode”

////////////////

hdfs namenode -format

////////////////

hdfs zkfc -formatZK

./runzk.sh “${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager”

 hadoop-daemon.sh start namenode





hbase-site.xml

<property>

 <name>hbase.rootdir</name>

 <value>hdfs://root01:9000/hbase</value>

 </property>

 <property>

 <name>hbase.cluster.distributed</name>

 <value>true</value>

 </property>

 <property>

 <name>hbase.zookeeper.quorum</name>

 <value>root01</value>

 </property>

 <property>

 <name>dfs.replication</name>

 <value>5</value>

 </property>

./runzoohadoophbasestart.sh

./runzoohadoophbasestop.sh
启动Hadoop集群:

./runall.sh "rm -rf /myhome/usr/hbase/logs/*"

 ./runall.sh "rm -rf /myhome/usr/hadoop/logs/*"

 ./runall.sh "rm -rf /myhome/usr/hadoop/hdfs/*"

Step1 :
在各个JournalNode节点上,输入以下命令启动journalnode服务:
sbin/hadoop-daemon.sh start journalnode
hadoop-daemon.sh start journalnode

cd /myhome
./runzk.sh "/myhome/usr/zookeeper/bin/zkServer.sh start"
./runzk.sh "/myhome/usr/hadoop/sbin/hadoop-daemon.sh start journalnode"
Step2:[nn1]上,对其进行格式化,并启动:
hdfs namenode -format
hdfs zkfc -formatZK
hadoop-daemon.sh start namenode
Step3:
ssh zjenterprise02[nn2]上,同步nn1的元数据信息:
hdfs namenode -bootstrapStandby
Step4:
启动[nn2]sbin/hadoop-daemon.sh start namenode
exit
经过以上四步操作,nn1nn2均处理standby状态
Step5: ssh zjenterprise01[nn1]切换为Active
hdfs haadmin -transitionToActive --forcemanual  zjenterprise01
hdfs haadmin -getServiceState zjenterprise01
 hdfs haadmin -transitionToActive nn1
ssh zjenterprise02 '/myhome/usr/hadoop/bin/hdfs haadmin -transitionToActive --forcemanual  zjenterprise01'

ssh zjenterprise02 '/myhome/usr/hadoop/bin/hdfs haadmin -getServiceState zjenterprise01'

Step6:[nn1]上,启动所有datanode
sbin/hadoop-daemons.sh start datanode

关闭Hadoop集群:
在[nn1]上,输入以下命令
sbin/stop-dfs.sh



  

 

解决办法

 

修改core-site.xml中的ipc参数

  <property>

   <name>ipc.client.connect.max.retries</name>

    <value>20</value>

    <description>

      Indicates the number of retries a clientwill make to establisha server connection.

    </description>

  </property>

 

  <property>

   <name>ipc.client.connect.retry.interval</name>

    <value>5000</value>

    <description>

      Indicates the number of milliseconds aclient will wait for before retrying to establish a server connection.

    </description>

  </property>









猜你喜欢

转载自ssydxa219.iteye.com/blog/2212682