hadoop(HA)、hbase(HA)、hive安裝


---------------------------------------------
HOSTNAME zhaixl2
mac 00:50:56:2b:fb:ac 
ip 192.168.72.12

HOSTNAME zhaixl1
mac 00:0c:29:b6:25:ff
ip 192.168.72.11

先設置好一臺
java
ip  
可以上網

關閉防火牆
[root@bigdata32 ~]# firewall-cmd --state
not running
[root@bigdata32 ~]# systemctl status iptables.service
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
開啓ssh


非root用戶,配置好軟件再克隆,如log的路徑(擁有權限)


---------------------------------------------------------------
HOSTNAME bigdata33
mac 00:50:56:36:17:82
ip 192.168.72.33


HOSTNAME bigdata32
mac 00:50:56:2B:A0:AB
ip 192.168.72.32


HOSTNAME bigdata34
mac 00:50:56:3C:34:FA
ip 192.168.72.34


HOSTNAME bigdata35
mac 00:50:56:23:50:9A
ip 192.168.72.35


HOSTNAME bigdata36
mac 00:50:56:3B:C7:C2
ip 192.168.72.36


HOSTNAME bigdata37
mac 00:50:56:35:3C:94
ip 192.168.72.37


HOSTNAME bigdata38
mac 00:50:56:2D:C0:11
ip 192.168.72.38


HOSTNAME bigdata39
mac 00:50:56:38:75:0B
ip 192.168.72.39


hosts
192.168.72.32 bigdata32  zookeeper
192.168.72.33 bigdata33  zookeeper
192.168.72.34 bigdata34  zookeeper
192.168.72.35 bigdata35  
192.168.72.36 bigdata36
192.168.72.37 bigdata37
192.168.72.38 bigdata38
192.168.72.39 bigdata39




ssh
192.168.72.11 zhaixl1   -->11/12/32/33/34/35/36/37/38/39
192.168.72.12 zhaixl2   -->11/12/32/33/34/35/36/37/38/39


192.168.72.32 bigdata32 -->11/12
192.168.72.33 bigdata33 -->11/12
192.168.72.34 bigdata34 -->11/12


192.168.72.35 bigdata35 -->11/12/35/36/37/38/39
192.168.72.36 bigdata36 -->11/12/35/36/37/38/39


192.168.72.37 bigdata37 -->11/12/35/36
192.168.72.38 bigdata38 -->11/12/35/36
192.168.72.39 bigdata39 -->11/12/35/36
--------------------------------------------------------------------------------
192.168.72.32 bigdata32  zookeeper
192.168.72.33 bigdata33  zookeeper
192.168.72.34 bigdata34  zookeeper
192.168.72.35 bigdata35  
192.168.72.36 bigdata36
192.168.72.37 bigdata37
192.168.72.38 bigdata38
192.168.72.39 bigdata39




tar zxvf /  xxxxx.tar.zip -C /bigdata 


scp -r /bigdata/zookeeper-3.4.9 [email protected]:/bigdata


zoo.cfg
#修改內容如下
ticketTime=2000 #服務器之間或客戶端與服務器之間維持心跳的時間間隔,每隔tickTime時間就會發送一個心跳。
initLimit=10 #配置 Zookeeper 接受客戶端(此客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已超過initLimit個tickTime長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,則表明客戶端連接失敗。總的時間長度就是 initLimit * tickTime 秒。
syncLimit=5 #配置 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 syncLimit * tickTime 秒。
clientPort=2181 #Zookeeper服務器監聽的端口,以接受客戶端的訪問請求。
dataDir=/bigdata/data/zookeeper/data #Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
dataLogDir=/bigdata/log/zookeeper/log #dataLogDir:若沒提供的話則用dataDir。zookeeper的持久化都存儲在這兩個目錄裏。dataLogDir裏是放到的順序日誌(WAL)。而dataDir裏放的是內存數據結構的snapshot,便於快速恢復。爲了達到性能最大化,一般建議把dataDir和dataLogDir分到不同的磁盤上,以充分利用磁盤順序寫的特性。
#server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,此端口就是用來執行選舉時服務器相互通信的端口。如果是僞集羣的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。2888端口是zookeeper服務相互通信使用的,3888端口是zookeeper服務選舉使用的
server.1=192.168.72.32:2888:3888
server.2=192.168.72.33:2888:3888
server.3=192.168.72.34:2888:3888


mkdir /bigdata/data/zookeeper/data
echo "1" >> /bigdata/data/zookeeper/data/myid
mkdir /bigdata/log/zookeeper/log




sh /bigdata/zookeeper-3.4.9/bin/zkServer.sh start
sh /bigdata/zookeeper-3.4.9/bin/zkServer.sh status




Mode: follower
Mode: leader
Mode: follower


echo 'export ZK_HOME=/bigdata/zookeeper-3.4.9' >> /etc/profile
echo 'export PATH=$PATH:${ZK_HOME}/bin' >> /etc/profile
source /etc/profile
---------------------------------------------------------------------------------
集羣規劃:
主機名 IP 安裝的軟件 運行的進程
bigdata35 192.168.72.35 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
bigdata36 192.168.72.36 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
bigdata35 192.168.72.35 jdk、hadoop ResourceManager 
bigdata36 192.168.72.36 jdk、hadoop ResourceManager
bigdata37 192.168.72.37 jdk、hadoop DataNode、NodeManager、JournalNode、QuorumPeerMain
bigdata38 192.168.72.38 jdk、hadoop DataNode、NodeManager、JournalNode、QuorumPeerMain
bigdata39 192.168.72.39 jdk、hadoop DataNode、NodeManager、JournalNode、QuorumPeerMain

配置hadoop
第一個:hadoop-env.sh
vim hadoop-env.sh
#第27行
        export JAVA_HOME=/installsoft/jdk1.8.0_121



第二個:core-site.xml
        <configuration>
<!-- 指定hdfs的nameservice爲ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bi/</value>
</property>
<!-- 指定hadoop臨時目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/bigdata/hadoop/app/hadoopdata/</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>bigdata32:2181,bigdata33:2181,bigdata34:2181</value>
</property>
        </configuration>



第三個:hdfs-site.xml   
        <configuration>
<!--指定hdfs的nameservice爲bi,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>bi</value>
</property>
<!-- bi下面有兩個NameNode,分別是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.bi</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.bi.nn1</name>
<value>bigdata35:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.bi.nn1</name>
<value>bigdata35:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.bi.nn2</name>
<value>bigdata36:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.bi.nn2</name>
<value>bigdata36:50070</value>
</property>
<!-- 指定NameNode的edits元數據在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://bigdata37:8485;bigdata38:8485;bigdata39:8485/bi</value>
</property>
<!-- 指定JournalNode在本地磁盤存放數據的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/bigdata/hadoop/journaldata</value>
</property>
<!-- 開啓NameNode失敗自動切換 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失敗自動切換實現方式 -->
<property>
<name>dfs.client.failover.proxy.provider.bi</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 (mv mapred-site.xml.template mapred-site.xml)
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr運行在yarn上 -->
        <configuration>
<!-- 指定mr框架爲yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
        </configuration>

第五個: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>yrc</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>bigdata35</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>bigdata36</value>
</property>
<!-- 指定zk集羣地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>bigdata32:2181,bigdata33:2181,bigdata34:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
        </configuration>
    
2.2.6修改slaves


bigdata37
bigdata38
bigdata39




export JAVA_HOME=/installsoft/jdk1.8.0_121


  
export HADOOP_HOME=/bigdata/hadoop-2.6.4  
export PATH=$PATH:${HADOOP_HOME}/bin 


echo 'export HADOOP_HOME=/bigdata/hadoop-2.6.4' >> /etc/profile
echo 'export PATH=$PATH:${HADOOP_HOME}/bin' >> /etc/profile
source /etc/profile




scp -r /bigdata/hadoop-2.6.4  bigdata35:/bigdata


echo 'export HADOOP_HOME=/bigdata/hadoop-2.6.4' >> /etc/profile
echo 'export PATH=$PATH:${HADOOP_HOME}/bin' >> /etc/profile
source /etc/profile
mkdir /bigdata/hadoop/app/hadoopdata/


mkdir /bigdata/hadoop/journaldata




2.5啓動zookeeper集羣(分別在bigdata32、bigdata33、bigdata34上啓動zk)
            zkServer.sh status
zkServer.sh start
#查看狀態:一個leader,兩個follower
zkServer.sh status

2.6啓動journalnode(分別在在bigdata37、bigdata38、bigdata39上執行)
cd /bigdata/hadoop-2.6.4
sbin/hadoop-daemon.sh start journalnode
#運行jps命令檢驗,bigdata37、bigdata38、bigdata39上多了JournalNode進程

2.7格式化HDFS
#在bigdata35上執行命令:
hdfs namenode -format
#格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這裏我配置的是/bigdata/hadoop/app/hadoopdata/,然後將/bigdata/hadoop/app/hadoopdata/拷貝到bigdata36的/bigdata/hadoop/app/hadoopdata/下。
scp -r /bigdata/hadoop/app/hadoopdata bigdata36:/bigdata/hadoop/app/
##也可以這樣,建議hdfs namenode -bootstrapStandby

2.8格式化ZKFC(在bigdata35上執行一次即可)
hdfs zkfc -formatZK

2.9啓動HDFS(在bigdata35上執行)
sbin/start-dfs.sh


2.10啓動YARN(#####注意#####:是在bigdata36上執行start-yarn.sh,把namenode和resourcemanager分開是因爲性能問題,因爲他們都要佔用大量資源,所以把他們分開了,他們分開了就要分別在不同的機器上啓動)
sbin/start-yarn.sh
            bigdata35的resourcemanager需要手動單獨啓動:
            sbin/yarn-daemon.sh start resourcemanager



到此,hadoop-2.6.4配置完畢,可以統計瀏覽器訪問:
http://bigdata35:50070    //hosts
NameNode 'bigdata35:9000' (active)
http://bigdata36:50070   // hosts
NameNode 'bigdata36:9000' (standby)


驗證HDFS HA
首先向hdfs上傳一個文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然後再kill掉active的NameNode
kill -9 <pid of NN>
通過瀏覽器訪問:http://192.168.72.35:50070
NameNode 'bigdata35:9000' (active)
這個時候bigdata36上的NameNode變成了active
在執行命令:
hadoop fs -ls /
-rw-r--r--   3 root supergroup       1926 2014-02-06 15:36 /profile
剛纔上傳的文件依然存在!!!
手動啓動那個掛掉的NameNode
sbin/hadoop-daemon.sh start namenode
通過瀏覽器訪問:http://192.168.72.35:50070
NameNode 'bigdata35:9000' (standby)


驗證YARN:
運行一下hadoop提供的demo中的WordCount程序:
        hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount /profile /bigdata
        
OK,大功告成!!!




測試集羣工作狀態的一些指令 :
bin/hdfs dfsadmin -report 查看hdfs的各節點狀態信息




bin/hdfs haadmin -getServiceState nn1 獲取一個namenode節點的HA狀態


sbin/hadoop-daemon.sh start namenode  單獨啓動一個namenode進程


./hadoop-daemon.sh start zkfc   單獨啓動一個zkfc進程






----------------------------------------------------------------------------
192.168.72.32 bigdata32  
192.168.72.33 bigdata33  
192.168.72.34 bigdata34  
192.168.72.35 bigdata35  Hbase    HMaster(backup)
192.168.72.36 bigdata36  Hbase    HMaster(Master)
192.168.72.37 bigdata37  Hbase    HRegionServer
192.168.72.38 bigdata38  Hbase    HRegionServer
192.168.72.39 bigdata39  Hbase    HRegionServer


hbase  怎麼配置 hadoop ha
hadoop做HA後,hbase修改


Hadoop 2.8 的namenode 從單點向雙namenode的HA的升級過程,含wordcount驗證
--http://blog.csdn.net/darkdragonking/article/details/72781782


在hadoop2.8的HA+zookeeper的環境下安裝分佈式HBase 1.2.5 以及HMaster的高可用(HA) -- http://blog.csdn.net/darkdragonking/article/details/72901330






由於hadoop做了HA,namenode可能進行切換,hbase中的配置要做修改:


hbase-site.xml中,rootdir改爲和hadoop的dfs.nameservices一樣,


並將hadoop的core-site.xml和hdfs-site.xml拷貝到hbase的conf下,然後重啓hbase
<!-- 不在同一臺機器上 -->
還要把hdfs-site.xml和core-site.xml複製到hbase的conf目錄下。不然會報找不到myha的錯誤。
hbase的ha配置就是在conf目錄下,配置backup-masters文件,裏面寫備用的master。


<name>hbase.rootdir</name>


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




export JAVA_HOME=/installsoft/jdk1.8.0_121


  
export HBASE_HOME=/bigdata/hbase-0.99.2  
export PATH=$PATH:${HBASE_HOME}/bin 


echo 'export HBASE_HOME=/bigdata/hbase-0.99.2' >> /etc/profile
echo 'export PATH=$PATH:${HBASE_HOME}/bin' >> /etc/profile
source /etc/profile




scp -r /bigdata/hbase-0.99.2   bigdata35:/bigdata


echo 'export HBASE_HOME=/bigdata/hbase-0.99.2' >> /etc/profile
echo 'export CLASS_PATH=$CLASS_PATH:${HBASE_HOME}/lib' >> /etc/profile
echo 'export PATH=$PATH:${HBASE_HOME}/bin' >> /etc/profile
source /etc/profile
mkdir /bigdata/data/hbase/tmp




1 conf/hbase-env.sh 
export JAVA_HOME=/installsoft/jdk1.8.0_121




cat >> conf/hbase-env.sh << EOF
export HADOOP_HOME=/bigdata/hadoop-2.6.4  #配置hadoop變量,否則hbase不識別hdfs集羣名
export HBASE_HOME=/bigdata/hbase-0.99.2
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_MANAGES_ZK=fales            #不使用hbase自帶的zookeeper,使用搭建的zk集羣。
export HBASE_CLASSPATH=${HBASE_HOME}/conf
export JAVA_HOME=/installsoft/jdk1.8.0_121
EOF


2 <!--##############hbase-site.xml##########-->
<configuration>
<property>
<!--設置hbase 數據庫存放數據的目錄-->
<name>hbase.rootdir</name>
<value>hdfs://bi/hbase</value>
</property>
<property>
<!--打開hbase分佈模式-->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<!--指定hbase的master-->
<name>hbase.master</name>
<value>60000</value>
</property>
<property>
<!--指定zookeeper集羣節點名,因爲是由zookeeper表決算法決定的-->
<name>hbase.zookeeper.quorum</name>
<value>bigdata32:2181,bigdata33:2181,bigdata34:2181</value>
</property>
<property>
<!--指zookeeper集羣data目錄-->
<name>hbase.zookeeper.property.dataDir</name>
<value>/bigdata/data/zookeeper/data/</value>
</property>
<property>
<!--指hbase的tmp目錄-->
<name>hbase.tmp.dir</name>
<value>/bigdata/data/hbase/tmp</value>
</property>
</configuration>


3 conf/regionservers


bigdata37
bigdata38
bigdata39


scp -r /bigdata/hbase-0.99.2   bigdata35:/bigdata


4 bigdata35
bin/start-hbase.sh
  bigdata36
bin/hbase-daemon.sh start master
  
5  http://bigdata35:16010
   http://bigdata36:16010
   
   
------------------------------------------------------------------------------------------


    集羣整理:
    bigdata32 192.168.72.32     kafka、zookeeper             QuorumPeerMain、kafka
    bigdata33 192.168.72.33     kafka、zookeeper             QuorumPeerMain、kafka
    bigdata34 192.168.72.34     kafka、zookeeper             QuorumPeerMain、kafka  
    
bigdata35 192.168.72.35     jdk、hadoop         NameNode(Master)、DFSZKFailoverController(zkfc)
bigdata36 192.168.72.36     jdk、hadoop         NameNode(backup)、DFSZKFailoverController(zkfc)
bigdata35 192.168.72.35     jdk、hadoop         ResourceManager(backup) 
bigdata36 192.168.72.36     jdk、hadoop         ResourceManager(Master)
    bigdata35 192.168.72.35     jdk、Hbase                   HMaster(backup)
    bigdata36 192.168.72.36     jdk、Hbase                   HMaster(Master)
    
bigdata37 192.168.72.37     jdk、hadoop、Hbase DataNode、NodeManager、JournalNode、HRegionServer
bigdata38 192.168.72.38     jdk、hadoop、Hbase DataNode、NodeManager、JournalNode、HRegionServer
bigdata39 192.168.72.39     jdk、hadoop、Hbase DataNode、NodeManager、JournalNode、HRegionServer


-------------------------------------------------------------------------------------------
create user 'hive' identified by 'hive';
grant all privileges on *.* to 'hive' with grant option;
flush privileges;
create database hive;


jdbc:mysql://www.o88o.xyz:3306/hive?createDatabaseIfNotExist=true


配置Hive
1、在~/.bashrc或.bash_profile文件中增加以下設置,
在/etc/profile文件中增加以下設置:
# set hive environment
exportHIVE_HOME=/bigdata/apache-hive-2.2.0/
export PATH=$HIVE_HOME/bin:$PATH


echo 'export HBASE_HOME=/bigdata/apache-hive-2.2.0' >> /etc/profile
echo 'export PATH=$PATH:${HBASE_HOME}/bin' >> /etc/profile
echo 'export CLASSPATH=$CLASSPATH:${HBASE_HOME}/lib' >> /etc/profile
source /etc/profile


2、新建hive-site.xml、hive-env.sh等文件
打開目錄
cd /bigdata/apache-hive-2.2.0/conf/
拷貝
cp hive-default.xml.template hive-default.xml
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-log4j2.properties.template hive-log4j.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j.properties
3、第一次修改hive-site.xml
使用vim命令打開
vim hive-site.xml
使用/**查找需要修改的內容
如下:
Server2連接的主機名,Hive安裝在Master機上
 <property>
 <name>hive.server2.thrift.bind.host</name>
 <value>zhaixl1</value>
 </property>
所連接的MySQL數據庫實例
 <property>
 <name>javax.jdo.option.ConnectionURL</name>
 <value>jdbc:mysql://www.o88o.xyz:3306/hive?createDatabaseIfNotExist=true</value>
 <description>JDBC connect string for a JDBCmetastore</descriptioni
</property>
連接的MySQL數據庫驅動
<property>
 <name>javax.jdo.option.ConnectionDriverName</name>
 <value>com.mysql.jdbc.Driver</value>
 <description>Driver class name for a JDBCmetastore</description>
</property>
連接的MySQL數據庫用戶名
<property>
 <name>javax.jdo.option.ConnectionUserName</name>
 <value>hive</value>
 <description>username to use against metastoredatabase</description>
</property>
連接的MySQL數據庫密碼
<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>hive</value>
 <description>password to use against metastoredatabase</description>
</property>
4、第二次修改hive-site.xml
在/bigdata/apache-hive-2.2.0/目錄下新建iotmp文件夾
mkdir /bigdata/apache-hive-2.2.0/iotmp
將含有hive-site.xml中含有"system:java.io.tmpdir"的配置項的值修改爲
/bigdata/apache-hive-2.2.0/iotmp
修改方法和上一步驟相同
如果不進行修改,會報一下錯誤:
Relative path in absoluteURI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
5、下載mysql jdbc jar包
下載地址:
http://dev.mysql.com/downloads/connector/j/

http://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.37.tar.gz
下載完成後,拿U盤複製到/home/hadoop目錄下
在/home/hadoop目錄下,解壓安裝
tar -zxvf mysql-connector-java-5.1.37.tar.gz
拷貝到Hive的lib目錄下
cp mysql-connector-java-5.1.37/mysql-connector-java-5.1.37-bin.jar $HIVE_HOME/lib
其中,$HIVE_HOME/lib即/usr/local/apache-hive-1.2.1-bin/lib
如果不進行這一步,或操作過程中出錯,啓動Hive時,會報錯
Unable to instantiateorg.apache.hadoop.hive.metastore.HiveMetaStoreClient

The specified datastore driver("com.mysql.jdbc.Driver") was not found in the CLASSPATH
6、修改hive-env.sh
這個文件在conf目錄下
加入以下內容


cat >> conf/hive-env.sh << EOF
export HADOOP_HOME=/bigdata/hadoop-2.6.4  #配置hadoop變量,否則hbase不識別hdfs集羣名
export JAVA_HOME=/installsoft/jdk1.8.0_121
EOF


cat >> conf/hive-env.sh << EOF
# set java environment
export JAVA_HOME=/installsoft/jdk1.8.0_121
export JRE_HOME=/installsoft/jdk1.8.0_121/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
 
# set hadoop path
export HADOOP_HOME=/bigdata/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin:$PATH
 
# set hive environment
export HIVE_HOME=/bigdata/apache-hive-2.2.0
export PATH=$HIVE_HOME/bin:$PATH
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HADOOP_USER_CLASSPATH_FIRST=true
EOF
其中,最後一句很重要,如果不加入,啓動Hive時,會報以下錯誤
[ERROR] Terminal initialization failed;falling back to unsupported 
java.lang.IncompatibleClassChangeError:Found class jline.Terminal, but interface was expected 


報錯:
 Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized.   
    Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed,   
    don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)  
解決:
#數據庫的初始化。  
     bin/schematool -initSchema -dbType mysql  
 
 
四、啓動Hive
前提條件:啓動Hive前,需要啓動Hadoop集羣和MySQL
1、測試能否正常啓動
cd /bigdata/apache-hive-2.2.0/
bin/hive
成功啓動的提示:
[hadoop@Master apache-hive-1.2.1-bin]$bin/hive
 
Logging initialized using configuration in
file:/bigdata/apache-hive-2.2.0/conf/hive-log4j.properties
hive>
2、基本操作
展現TABLES,初次操作時,只返回OK和操作所用時間
hive> SHOW TABLES;
建立表records
hive> CREATE TABLE records (year STRING,temperature INT, quality INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
顯示存在的表,多了一個records
hive> SHOW TABLES;          
查看錶records的定義
hive> DESCRIBE records;
向表records導入數據,數據在sample.txt中
hive> LOAD DATA INPATH'/bigdata/sample.txt' INTO TABLE records; 
查看錶records的數據
hive> SELECT * FROM records;
一個普通操作,例如:計算records中每一年的最高溫度
hive> SELECT year, MAX(temperature) FROMrecords GROUP BY year;
 
 scp -r /bigdata/apache-hive-2.2.0   bigdata35:/bigdata
 
3、啓動hiveserver2
[hadoop@zhaixl1 apache-hive-2.2.0]$ nohup hive --service hiveserver2 &
[1] 22539
[hadoop@zhaixl1 apache-hive-2.2.0]$nohup: ignoring input and appending output to `nohup.out'
beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://bigdata35:10000
Connecting to jdbc:hive2://bigdata35:10000
Enter username forjdbc:hive2://bigdata35:10000: hive
Enter password forjdbc:hive2://bigdata35:10000: ****
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://bigdata35:10000> show tables;
+-----------+--+
| tab_name |
+-----------+--+
| records  |
+-----------+--+
1 row selected (3.509 seconds)
0: jdbc:hive2://bigdata35:10000> 


當執行!connect jdbc:hive2://localhost:10000時,出現錯誤:
Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: jimmyhadoop is not allowed to impersonate root (state=,code=0)
解決辦法:終止hadoop,修改etc/hadoop/core-site.xml,添加兩項:


<property>  
    <name>hadoop.proxyuser.username.hosts</name>  
    <value>*</value>  
</property>  
  
<property>  
    <name>hadoop.proxyuser.username.groups</name>  
    <value>*</value>  
</property>  


<property>  
    <name>hadoop.proxyuser.root.hosts</name>  
    <value>*</value>  
</property>  
  
<property>  
    <name>hadoop.proxyuser.root.groups</name>  
    <value>*</value>  
</property>  
其中的username改成你hadoop master主機的用戶名,保存,重啓hadoop,重新連接hive。
    
--hive倉庫路徑:/user/hive/warehouse/
hive> show create table records ;
OK
CREATE TABLE `records`(
  `year` string, 
  `temperature` int, 
  `quality` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'field.delim'='\t', 
  'serialization.format'='\t') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://bi/user/hive/warehouse/records'
TBLPROPERTIES (
  'COLUMN_STATS_ACCURATE'='{\"BASIC_STATS\":\"true\"}', 
  'numFiles'='0', 
  'numRows'='0', 
  'rawDataSize'='0', 
  'totalSize'='0', 
  'transient_lastDdlTime'='1514314312')
Time taken: 0.894 seconds, Fetched: 22 row(s)
hive> 
    
-- 報錯:
17/12/27 18:45:58 [main]: WARN jdbc.HiveConnection: Failed to connect to bigdata35:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://bigdata35:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=EXECUTE, inode="/tmp":root:supergroup:drwx------
解決:
從上面的錯誤看出該用戶 沒有執行權限  查看了一下


hadoop fs -ls /tmp


確實 ,權限不夠,只能切換到超級用戶 su  grid  賦予root 相應的權限


[grid@h1 root]$ hadoop fs -chown -R root:root  /tmp

 

深圳逆時針

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章