分享

hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布式集群HA部署

【2015年6月19日】
刚接触Hadoop两个月,因为公司要用,所以现学的,看的文章比较杂,尤其是1.x和2.x的混着看,越看越理不清头绪,这几天才算入了点门
我这也是整合了大家的东西整理出来的,如果有不足或者错误的地方,希望大家指正
因为准备生产环境用的,所以都做了HA
HDFS的NameNode HA
YARN的Resource Manager HA
Hbase的Hmaster HA
Hive的Hiveserver2 HA
PS:听说还有人对JobHistory做HA,这个我没做,谁有经验的也跟我讲下
=================================================================
角色分配
hadoop主机角色分配.png

部署hadoop完全分布式

一、准备环境

移除已有jdk(最小化安装没有自带jdk,可略过此步骤)
yum remove java-1.7.0-openjdk -y

关闭防火墙和selinux
service iptables stop
chkconfig iptables off

setenforce 0
vi /etc/selinux/config
SELINUX=disabled

所有机器同步时间
ntpdate 192.168.7.2

配置主机名和hosts
vi /etc/networks
HOSTNAME=hadoop001~005

编辑hosts文件
vi /etc/hosts
192.168.5.2    hadoop001.xiazy.net hadoop001
192.168.5.3    hadoop002.xiazy.net hadoop002
192.168.5.4    hadoop003.xiazy.net hadoop003
192.168.5.5    hadoop004.xiazy.net hadoop004
192.168.5.6    hadoop005.xiazy.net hadoop005

配置yum源
vi /etc/yum.repos.d/rhel.repo

创建hadoop用户和组
groupadd hadoop
useradd -g hadoop hadoop
passwd hadoop

赋权限,以备后续步骤安装软件[安装包都在/usr/local/src]
chown hadoop.hadoop /usr/local/src -R

切换hadoop用户
su - hadoop

配置密钥验证免密码登录[所有namenode都要做一遍]
ssh-keygen -t rsa -P ''
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@hadoop001.xiazy.net
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@hadoop002.xiazy.net
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@hadoop003.xiazy.net
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@hadoop004.xiazy.net
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@hadoop005.xiazy.net

验证
ssh hadoop002.xiazy.net ~ hadoop005.xiazy.net

创建备用目录
mkdir -pv /home/hadoop/storage/zookeeper/{data,logs}
for ip in `seq 2 5`;do scp -r /home/hadoop/storage hadoop00$ip.xiazy.net:/home/hadoop/;done

配置hadoop环境变量
vi ~/.bashrc
export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
##############java############################
export HADOOP_HOME=/home/hadoop/hadoop
export HIVE_HOME=/home/hadoop/hive
export HBASE_HOME=/home/hadoop/hbase
##############hadoop-hbase-hive###############
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
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 PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin

source ~/.bashrc

for ip in `seq 2 5`;do scp ~/.bashrc hadoop00$ip.xiazy.net:~/.bashrc;done


安装jdk
rpm -ivh /usr/local/src/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
配置环境变量[准备环境时已做,此步骤可略]
验证jdk安装成功
java -version


二、部署hadoop-2.6.0 hdfs的namenoe HA、yarn的resource manager HA

解压、改名
tar xf /usr/local/src/hadoop-2.6.0.tar.gz -C /home/hadoop
mv /home/hadoop/hadoop-2.6.0 /home/hadoop/hadoop

配置hadoop环境变量[准备环境时已做,略]

验证hadoop安装成功
hadoop version

修改hadoop配置文件
[1]
vi /home/hadoop/hadoop/etc/hadoop/core-site.xml
###############################################
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- 开启垃圾箱功能,1440分钟 -->
  <property>
    <name>fs.trash.interval</name>
    <value>1440</value>
  </property>

  <!-- 指定hdfs的nameservice为ns1,是NameNode的URI。hdfs://主机名:端口/ -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://gagcluster:8020</value>
  </property>

  <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>

  <!-- 指定hadoop临时目录 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/storage/hadoop/tmp</value>
  </property>

  <!--指定可以在任何IP访问-->
  <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>hadoop001.xiazy.net:2181,hadoop002.xiazy.net:2181,hadoop003.xiazy.net:2181</value>
  </property>
</configuration>
#################################################

[2]
vi /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
################################################
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--节点黑名单列表文件,用于下线hadoop节点 -->
<property>
  <name>dfs.hosts.exclude</name>
  <value>/home/hadoop/hadoop/etc/hadoop/exclude</value>
</property>

<!--指定hdfs的block大小64M -->
  <property>
    <name>dfs.block.size</name>
    <value>67108864</value>
  </property>

<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
  <property>
    <name>dfs.nameservices</name>
    <value>gagcluster</value>
  </property>

<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
  <property>
    <name>dfs.ha.namenodes.gagcluster</name>
    <value>nn1,nn2</value>
  </property>

<!-- nn1的RPC通信地址 -->
  <property>
    <name>dfs.namenode.rpc-address.gagcluster.nn1</name>
    <value>hadoop001.xiazy.net:8020</value>
  </property>

<!-- nn1的http通信地址 -->
  <property>
    <name>dfs.namenode.http-address.gagcluster.nn1</name>
    <value>hadoop001.xiazy.net:50070</value>
  </property>

<!-- nn2的RPC通信地址 -->
  <property>
    <name>dfs.namenode.rpc-address.gagcluster.nn2</name>
    <value>hadoop002.xiazy.net:8020</value>
  </property>

<!-- nn2的http通信地址 -->
  <property>
    <name>dfs.namenode.http-address.gagcluster.nn2</name>
    <value>hadoop002.xiazy.net:50070</value>
  </property>

<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://hadoop001.xiazy.net:8485;hadoop002.xiazy.net:8485;hadoop003.xiazy.net:8485/gagcluster</value>
  </property>

<!-- 配置失败自动切换实现方式 -->
  <property>
    <name>dfs.client.failover.proxy.provider.gagcluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>

<!-- 配置隔离机制 -->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
  </property>

<!-- 使用隔离机制时需要ssh免密码登陆 -->
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
  </property>

<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/hadoop/storage/hadoop/journal</value>
  </property>

<!--指定支持高可用自动切换机制-->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>

<!--指定namenode名称空间的存储地址-->
  <property>
    <name>dfs.namenode.name.dir</name>   
    <value>/home/hadoop/storage/hadoop/name</value>
  </property>

<!--指定datanode数据存储地址-->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/hadoop/storage/hadoop/data</value>
  </property>

<!--指定数据冗余份数-->
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>

<!--指定可以通过web访问hdfs目录-->
  <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>

<!--保证数据恢复 -->
  <property>
    <name>dfs.journalnode.http-address</name>
    <value>0.0.0.0:8480</value>
  </property>

  <property>
    <name>dfs.journalnode.rpc-address</name>
    <value>0.0.0.0:8485</value>
  </property>

  <property>
    <name>ha.zookeeper.quorum</name>
    <value>hadoop001.xiazy.net:2181,hadoop002.xiazy.net:2181,hadoop003.xiazy.net:2181</value>
  </property>
</configuration>
#################################################

[3]
vi /home/hadoop/hadoop/etc/hadoop/mapred-site.xml
#################################################
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 配置MapReduce运行于yarn中 -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>0.0.0.0:10020</value>
  </property>

<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>0.0.0.0:19888</value>
  </property>
</configuration>
###################################################

[4]
yarn-site.xml
###################################################
<?xml version="1.0"?>
<configuration>
<!--日志聚合功能-->  
  <property>
     <name>yarn.log-aggregation-enable</name>
     <value>true</value>
  </property>

<!--在HDFS上聚合的日志最长保留多少秒。3天-->  
  <property>
     <name>yarn.log-aggregation.retain-seconds</name>
     <value>259200</value>
  </property>

<!--rm失联后重新链接的时间-->  
  <property>  
     <name>yarn.resourcemanager.connect.retry-interval.ms</name>  
     <value>2000</value>  
  </property>

<!--开启resource manager HA,默认为false-->  
  <property>  
     <name>yarn.resourcemanager.ha.enabled</name>  
     <value>true</value>  
  </property>  

<!--配置resource manager -->
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
  </property>

  <property>
    <name>ha.zookeeper.quorum</name>
    <value>hadoop001.xiazy.net:2181,hadoop002.xiazy.net:2181,hadoop003.xiazy.net:2181</value>  
  </property>
   
<!--开启故障自动切换-->  
  <property>  
     <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>  
     <value>true</value>  
  </property>  

  <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hadoop001.xiazy.net</value>
  </property>
                     
  <property>
     <name>yarn.resourcemanager.hostname.rm2</name>
     <value>hadoop002.xiazy.net</value>
  </property>

<!--在namenode1上配置rm1,在namenode2上配置rm2,注意:一般都喜欢把配置好的文件远程复制到其它机器上,但这个在YARN的另一个机器上一定要修改-->  
  <property>  
    <name>yarn.resourcemanager.ha.id</name>  
    <value>rm1</value>
  </property>  

<!--开启自动恢复功能-->  
  <property>
    <name>yarn.resourcemanager.recovery.enabled</name>  
    <value>true</value>  
  </property>

<!--配置与zookeeper的连接地址-->  
  <property>  
    <name>yarn.resourcemanager.zk-state-store.address</name>  
    <value>hadoop001.xiazy.net:2181,hadoop002.xiazy.net:2181,hadoop003.xiazy.net:2181</value>
  </property>  

  <property>  
    <name>yarn.resourcemanager.store.class</name>  
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>  
  </property>  

  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop001.xiazy.net:2181,hadoop002.xiazy.net:2181,hadoop003.xiazy.net:2181</value>
  </property>

  <property>  
    <name>yarn.resourcemanager.cluster-id</name>  
    <value>gagcluster-yarn</value>  
  </property>  

<!--schelduler失联等待连接时间-->  
  <property>  
    <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>  
    <value>5000</value>  
  </property>  

<!--配置rm1-->  
  <property>  
    <name>yarn.resourcemanager.address.rm1</name>  
    <value>hadoop001.xiazy.net:8132</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.scheduler.address.rm1</name>  
    <value>hadoop001.xiazy.net:8130</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.webapp.address.rm1</name>  
    <value>hadoop001.xiazy.net:8188</value>  
  </property>  

  <property>
    <name>yarn.resourcemanager.resource-tracker.address.rm1</name>  
    <value>hadoop001.xiazy.net:8131</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.admin.address.rm1</name>  
    <value>hadoop001.xiazy.net:8033</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.ha.admin.address.rm1</name>  
    <value>hadoop001.xiazy.net:23142</value>  
  </property>  

<!--配置rm2-->  
  <property>  
    <name>yarn.resourcemanager.address.rm2</name>  
    <value>hadoop002.xiazy.net:8132</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.scheduler.address.rm2</name>  
    <value>hadoop002.xiazy.net:8130</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.webapp.address.rm2</name>  
    <value>hadoop002.xiazy.net:8188</value>  
  </property>  

  <property>
    <name>yarn.resourcemanager.resource-tracker.address.rm2</name>  
    <value>hadoop002.xiazy.net:8131</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.admin.address.rm2</name>  
    <value>hadoop002.xiazy.net:8033</value>  
  </property>  

  <property>  
    <name>yarn.resourcemanager.ha.admin.address.rm2</name>  
    <value>hadoop002.xiazy.net:23142</value>  
  </property>  

  <property>  
    <name>yarn.nodemanager.aux-services</name>  
    <value>mapreduce_shuffle</value>  
  </property>  

  <property>  
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
  </property>  

  <property>  
    <name>yarn.nodemanager.local-dirs</name>  
    <value>/home/hadoop/storage/yarn/local</value>  
  </property>  

  <property>  
    <name>yarn.nodemanager.log-dirs</name>  
    <value>/home/hadoop/storage/yarn/logs</value>  
  </property>  

  <property>  
    <name>mapreduce.shuffle.port</name>  
    <value>23080</value>  
  </property>  

<!--故障处理类-->  
  <property>  
    <name>yarn.client.failover-proxy-provider</name>  
    <value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value>  
  </property>  

  <property>
      <name>yarn.resourcemanager.ha.automatic-failover.zk-base-path</name>
      <value>/yarn-leader-election</value>
  </property>
</configuration>

#######################################################

配置DataNode节点
vi /home/hadoop/hadoop/etc/hadoop/slaves
#######################################################
hadoop001.xiazy.net
hadoop002.xiazy.net
hadoop003.xiazy.net
hadoop004.xiazy.net
hadoop005.xiazy.net

创建exclude文件,用于以后下线hadoop节点
touch /home/hadoop/hadoop/etc/hadoop/exclude

同步hadoop工程到hadoop002~005机器上面
for ip in `seq 2 5`;do scp -r /home/hadoop/hadoop hadoop00$ip.xiazy.net:/home/hadoop/;done

修改nn2配置文件yarn-site.xml
#####################################################
  <property>
    <name>yarn.resourcemanager.ha.id</name>  
    <value>rm2</value>
  </property>
#####################################################

三、部署zookeeper3.4.6三节点完全分布式集群
使用三台服务器安装zookeeper,安装在hadoop用户上
hadoop001.xiazy.net 192.168.5.2
hadoop002.xiazy.net 192.168.5.3
hadoop003.xiazy.net 192.168.5.4

解压、改名
tar xf zookeeper-3.4.6.tar.gz -C /home/hadoop/
mv /home/hadoop/zookeeper-3.4.6/ /home/hadoop/zookeeper

修改配置文件
vi /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/hadoop/storage/zookeeper/data
dataLogDir=/home/hadoop/storage/zookeeper/logs
clientPort=2181
server.1=hadoop001.xiazy.net:2888:3888
server.2=hadoop002.xiazy.net:2888:3888
server.3=hadoop003.xiazy.net:2888:3888

同步到hadoop002、hadoop003节点
for ip in `seq 2 3`;do scp -r /home/hadoop/zookeeper hadoop00$ip.xiazy.net:/home/hadoop;done

创建zookeeper的数据文件和日志存放目录[准备环境已做,此步骤略]

hadoop001~003分别编辑myid值  
echo 1 > /home/hadoop/storage/zookeeper/data/myid
echo 2 > /home/hadoop/storage/zookeeper/data/myid
echo 3 > /home/hadoop/storage/zookeeper/data/myid


四、部署hbase-1.0.0的Hmaster HA

解压部署
tar xf /usr/local/src/hbase-1.0.0-bin.tar.gz -C /home/hadoop
cd /home/hadoop
mv hbase-1.0.0 hbase

修改配置文件
配置regionserver节点
vi /home/hadoop/hbase/conf/regionservers
hadoop001.xiazy.net
hadoop002.xiazy.net
hadoop003.xiazy.net
hadoop004.xiazy.net
hadoop005.xiazy.net

vi /home/hadoop/hbase/conf/hbase-site.xml
####################################################
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!--因为是多台master,所以hbase.roodir的值跟hadoop配置文件hdfs-site.xml中dfs.nameservices的值是一样的-->
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://gagcluster:8020/hbase</value>
  </property>

  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>

  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/hadoop/storage/hbase</value>   
  </property>

  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop001.xiazy.net,hadoop002.xiazy.net,hadoop003.xiazy.net</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>

  <!--跟zookeeperper配置的dataDir一致-->
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/storage/zookeeper/data</value>
  </property>
</configuration>
#########################################################

禁用hbase自带的zookeeper
vi /home/hadoop/hbase/conf/hbase-env.sh
export HBASE_MANAGES_ZK=false

同步hbase工程到hadoop002~005机器上
for ip in `seq 2 5`;do scp -r /home/hadoop/hbase hadoop00$ip.xiazy.net:/home/hadoop;done



五、部署hive-1.1.0的hiveserver2 HA

解压部署
tar xf apache-hive-1.1.0-bin.tar.gz -C /home/hadoop/
mv /home/hadoop/apache-hive-1.1.0-bin /home/hadoop/hive

修改配置文件
cd /home/hadoop/hive/conf/
cp hive-default.xml.template hive-default.xml
vi hive-site.xml
#######################################################
<?xml version="1.0"?>   
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--在hdfs上hive数据存放目录,启动hadoop后需要在hdfs上手动创建-->
  <property>  
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>

<!--通过jdbc协议连接mysql的hive库-->
  <property>   
    <name>javax.jdo.option.ConnectionURL</name>   
    <value>jdbc:mysql://192.168.5.2:3306/hive?createDatabaseIfNotExist=true</value>   
  </property>

<!--jdbc的mysql驱动-->
  <property>   
    <name>javax.jdo.option.ConnectionDriverName</name>   
    <value>com.mysql.jdbc.Driver</value>   
  </property>

<!--mysql用户名-->
  <property>   
    <name>javax.jdo.option.ConnectionUserName</name>   
    <value>hive</value>     
  </property>   

<!--mysql用户密码-->     
  <property>   
    <name>javax.jdo.option.ConnectionPassword</name>   
    <value>hive</value>     
  </property>

<!--hive的web页面-->
  <property>  
    <name>hive.hwi.war.file</name>
    <value>lib/hive-hwi-1.1.0.war</value>
  </property>

<!--指定hive元数据访问路径,可以有多个,逗号分隔-->
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://192.168.5.2:9083</value>
</property>

<!--hiveserver2的HA-->
  <property>  
    <name>hive.zookeeper.quorum</name>
    <value>hadoop001.xiazy.net,hadoop002.xiazy.net,hadoop003.xiazy.net</value>
  </property>
</configuration>
###############################################################

cp hive-log4j.properties.template hive-log4j.properties
vi hive-log4j.properties
###############################################################
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
###############################################################

添加mysql驱动
cp /usr/local/src/mysql-connector-java-5.1.35.jar /home/hadoop/hive/lib/

添加hive web页面的war包
下载hive源码包,进入hwi/web
jar cvf hive-hwi-1.1.0.war ./*
cp hive-hwi-1.1.0.war  /home/hadoop/hive/lib/

从hbase/lib下复制必要jar包到hive/lib下
cp /home/hadoop/hbase/lib/hbase-client-1.0.0.jar /home/hadoop/hbase/lib/hbase-common-1.0.0.jar /home/hadoop/hive/lib

同步hive和hadoop的jline版本
cp /home/hadoop/hive/lib/jline-2.12.jar /home/hadoop/hadoop/share/hadoop/yarn/lib
查看版本
cd /home/hadoop/hadoop/share/hadoop/yarn/lib
find ./ -name "*jline*jar"
删除低版本的jline 0.9
rm jline-0.9.94.jar

复制jdk的tools.jar到hive/lib下
cp $JAVA_HOME/lib/tools.jar /home/hadoop/hive/lib

把hive工程传到其他节点
for ip in `seq 2 5`;do scp -r /home/hadoop/hive hadoop00$ip.xiazy.net:/home/hadoop/;done

在mysql中创建hive库,hive用户,密码hive

部署mysql5.6_64
下载解压
cd /usr/local/src/
wget http://dev.mysql.com/get/Downloa ... 6_64.rpm-bundle.tar
tar xf MySQL-5.6.23-1.el6.x86_64.rpm-bundle.tar

安装
yum install MySQL-shared-compat-5.6.23-1.el6.x86_64.rpm -y
#RHEL兼容包
yum install MySQL-server-5.6.23-1.el6.x86_64.rpm -y
#MySQL服务端程序
yum install MySQL-client-5.6.23-1.el6.x86_64.rpm -y
#MySQL客户端程序
yum install MySQL-devel-5.6.23-1.el6.x86_64.rpm -y
#MySQL的库和头文件
yum install MySQL-shared-5.6.23-1.el6.x86_64.rpm -y
#MySQL的共享库

配置MySQL登录密码
cat /root/.mysql_secret
#获取MySQL安装时生成的随机密码aHoUaEJFav0X7hlG
service mysql start
#启动MySQL服务
mysql -uroot -paHoUaEJFav0X7hlG
#进入MySQL,使用之前获取的随机密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xiazy.net');   
#在MySQL命令行中设置root账户的密码为xiazy.net

创建hive用户,密码hive
CREATE USER hive IDENTIFIED BY 'hive';  
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
flush privileges;

用创建的hive用户登录mysql并创建hive库
mysql -uhive -phive
create database hive;

#####################################################
Hadoop集群首次启动过程
#####################################################

1.如果zookeeper集群还没有启动的话, 首先把各个zookeeper起来。
/home/hadoop/zookeeper/bin/zkServer.sh start    (记住所有的zookeeper机器都要启动)
/home/hadoop/zookeeper/bin/zkServer.sh status (1个leader,n-1个follower)
输入jps,会显示启动进程:QuorumPeerMain

2.、然后在主namenode节点执行如下命令,创建命名空间
/home/hadoop/hadoop/bin/hdfs zkfc -formatZK  (复制命令,-会变成— 建议手敲)
验证成功
在zookeeper节点执行
/home/hadoop/zookeeper/bin/zkCli.sh
ls /
ls /hadoop-ha  
quit

3、在每个节点用如下命令启日志程序
/home/hadoop/hadoop/sbin/hadoop-daemon.sh start journalnode
(每个journalnode节点都需要启动)

4、在主namenode节点用./bin/hadoop namenode -format格式化namenode和journalnode目录
/home/hadoop/hadoop/bin/hadoop namenode -format

5、在主namenode节点启动namenode进程
/home/hadoop/hadoop/sbin/hadoop-daemon.sh start namenode

6、在备namenode节点执行第一行命令,把备namenode节点的目录格式化并把元数据从主namenode节点copy过来,并且这个命令不会把journalnode目录再格式化了!然后用第二个命令启动备namenode进程!
方法一、[hadoop002]
/home/hadoop/hadoop/bin/hdfs namenode -bootstrapStandby
/home/hadoop/hadoop/sbin/hadoop-daemon.sh start namenode
方法二、[hadoop002]
scp -r hadoop001.xiazy.net:/home/hadoop/storage/hadoop/name /home/hadoop/storage/hadoop
/home/hadoop/hadoop/sbin/hadoop-daemon.sh start namenode

7、在两个namenode节点都执行以下命令
/home/hadoop/hadoop/sbin/hadoop-daemon.sh start zkfc

8、启动datanode
方法一、
在所有DataNode节点单独启动
/home/hadoop/hadoop/sbin/hadoop-daemon.sh start datanode
方法二、
启动datanode节点多的时候,可以直接在主NameNode(nn1)上执行如下命令一次性启动所有datanode
/home/hadoop/hadoop/sbin/hadoop-daemons.sh start datanode

9. 启动Yarn和备ResourceManager
主NameNode节点上[hadoop001]
/home/hadoop/hadoop/sbin/start-yarn.sh
启动备节点ResourceManager[hadoop002]
/home/hadoop/hadoop/sbin/yarn-daemon.sh start resourcemanager

10.启动hbase
方法一、
主hmaster节点上
/home/hadoop/hbase/bin/start-hbase.sh
备hmaster节点上
/home/hadoop/hbase/bin/hbase-daemon.sh start master
验证安装成功
hbase shell
list
方法二、
添加配置文件
vi /home/hadoop/hbase/conf/backup-masters
hadoop002.xiazy.net
主master节点启动
/home/hadoop/hbase/bin/start-hbase.sh

11.启动hive
先在hdfs上创建好hive存储数据的目录
$HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse

hive 远程服务 (端口号10000) 启动方式[metastore和hiveserver2在同一台上启动即可]
nohup /home/hadoop/hive/bin/hive --service metastore &> metastore.log &  
nohup /home/hadoop/hive/bin/hive --service hiveserver2 &> hiveserver2.log &
【或nohup /home/hadoop/hive/bin/hiveserver2 &> hiveserver2.log &】
客户端调用
!connect jdbc:hive2://xxxxx:2181,xxxx:2181/;serviceDiscoveryMode=zookeeper user pass

hive 命令行模式
/home/hadoop/hive/bin/hive
或者输入
hive --service cli

hive web界面的 (端口号9999) 启动方式
/home/hadoop/hive/bin/hive --service hwi&
用于通过浏览器来访问hive
http://hadoop001.xiazy.net:9999/hwi/

【软件包】
http://pan.baidu.com/s/1hqF4utI

##########################################################
==========================================================
【备注】
启动hadoop jobhistory历史服务器
/home/hadoop/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
查看namenode状态
hdfs haadmin -getServiceState <serviceId>
开启垃圾箱功能后,如果希望文件直接被删除,可以使用如下命令:
hadoop fs -rm -skipTrash /xxx
命令hadoop fs –safemode get 查看安全模式状态
命令hadoop fs –safemode enter 进入安全模式状态
命令hadoop fs –safemode leave 离开安全模式状态
启动所有HRegionServer
hbase-daemons.sh start regionserver
启动单个HRegionServer
hbase-daemon.sh start regionserver
############################################################
============================================================
参考资料:
【Hdfs的NameNode HA、Yarn的Resouce Manager HA】
HBase+ZooKeeper+Hadoop2.6.0的ResourceManager HA集群高可用配置
http://www.aboutyun.com/thread-11909-1-1.html
【Hbase HA】
http://www.cnblogs.com/junrong624/p/3580477.html
http://www.07net01.com/linux/Hba ... 269_1377277861.html
【Hive HA】
Hive HA使用说明及Hive使用HAProxy配置HA(高可用)
http://www.aboutyun.com/thread-10938-1-1.html
Hive安装及使用攻略
http://blog.fens.me/hadoop-hive-intro/
Hive metastore三种配置方式
http://blog.csdn.net/reesun/article/details/8556078
Hive学习之HiveServer2服务端配置与启动
http://www.aboutyun.com/thread-12278-1-1.html
Hive学习之HiveServer2 JDBC客户端
http://blog.csdn.net/skywalker_only/article/details/38366347
Hive内置服务介绍
http://www.aboutyun.com/thread-7438-1-1.html
使用Hive命令行及内置服务
http://www.aboutyun.com/thread-12280-1-1.html
Hive配置文件中配置项的含义详解(收藏版)
http://www.aboutyun.com/thread-7548-1-1.html
hbase0.96与hive0.12整合高可靠文档及问题总结
http://www.aboutyun.com/thread-7881-1-1.html
【hadoop系列】
http://www.cnblogs.com/junrong624/category/537234.html
【其他】
HBase 默认配置说明
http://www.aboutyun.com/thread-7914-1-1.html
HBASE启动脚本/Shell解析
http://zjushch.iteye.com/blog/1736065
全面了解hive
http://www.aboutyun.com/thread-7478-1-1.html
Hadoop添加删除节点
http://my.oschina.net/MrMichael/blog/291802
粉丝日志
http://blog.fens.me/

已有(22)人评论

跳转到指定楼层
xiazy 发表于 2015-6-15 08:12:15
aaaa2011 发表于 2015-6-15 00:49
請問一下
我將 [4] yarn-site.xml整個複製配置好後,

nn2是namenode2的缩写,所以只要在第二个namenode上改就可以了,其他节点的不需要改,反正也不在它们上面启动NameNode进程
回复

使用道具 举报

mituan2008 发表于 2015-6-12 01:15:38
顶,不错。赞,楼主的分享精神
回复

使用道具 举报

叶孤城 发表于 2015-6-12 08:20:32
首先感谢楼主耗费精力总结的这么详细,我从头到尾看了一遍,非常感谢
我想提个建议哈:看到结尾的时候我发现楼主你好像是在各个单独的datanode节点上去启动datanode,这样如果集群大,有一百个甚至几百个datanode节点,那么你这样起很耗时啊。你可以在namenode节点的slaves文件中把所有的datanode节点的主机配置进去,这样在namenode上直接执行start-dfs.sh,所有datanode节点都会自动启动的。
回复

使用道具 举报

levycui 发表于 2015-6-12 09:52:03
楼主写的太好了,很详细,注释也很详细,不错
回复

使用道具 举报

hery 发表于 2015-6-12 10:12:56
谢谢楼主分享,真心不错
回复

使用道具 举报

dengwei20 发表于 2015-6-12 15:50:17
必须顶一下,有借鉴的地方
回复

使用道具 举报

hb1984 发表于 2015-6-12 17:24:33
谢谢楼主分享。      
回复

使用道具 举报

aaaa2011 发表于 2015-6-15 00:49:29
請問一下
我將 [4] yarn-site.xml整個複製配置好後,

同步hadoop工程到hadoop002~005机器上面

然後修改 hadoop002  的 yarn-site.xml ,將rm1 改rm2(只有要改這裡嗎?)
<!--在namenode1上配置rm1,在namenode2上配置rm2,注意:一般都喜欢把配置好的文件远程复制到其它机器上,但这个在YARN的另一个机器上一定要修改-->
  <property>
    <name>yarn.resourcemanager.ha.id</name>
    <value>rm2</value>
  <description>If we want to launch more than one RM in single node, we need this configuration</description>
  </property>

那因為hadoop003~hadoop005都沒改,所以和hadoop001的配置都一樣是rm1,是對的嗎?
回复

使用道具 举报

tang 发表于 2015-6-15 09:19:03
回复

使用道具 举报

123下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /5 下一条