spark2.0.1 on yarn with hue 集羣搭建部署(四)hive、hive metastore安裝

hive安裝整合sparksql

一、安裝hive

1、安裝說明

由於使用apache-hive-1.2.1-bin.tar.gz安裝測試時出現異常,使用hue創建數據庫表時:
這裏寫圖片描述

hive報錯

這裏寫圖片描述

導致錯誤的原因參見hive的相關bug:
https://issues.apache.org/jira/browse/HIVE-6893?jql=status%20%3D%20Resolved%20AND%20text%20~%20%22out%20of%20sequence%20response%22
以及:
https://issues.apache.org/jira/browse/HIVE-10956
主要是因爲hive採用ThreadLocal來保存連接,當hue打開session連接使用完成以後並未及時關閉,當session多了將導致異常,最終導致內存溢出。
由於解決的版本在1.3.0和2.0.0,目前穩定版本只有1.2.1和2.1.0,所以最終選擇2.1.0進行測試。

2、解壓hive

cd /data/soft
tar -xvzf apache-hive-2.1.0-bin.tar.gz -C /bigdata
mv apache-hive-1.2.1-bin hive

3、配置hive

cd /bigdata/hive21/conf/

1)、修改hive-env.sh文件

cp hive-env.sh.template hive-env.sh

將以下內容寫入到hive-env.sh文件中,如果/etc/profile文件中已經存在可以不添加。

export JAVA_HOME=/bigdata/bigdata/jdk
export HADOOP_HOME=/bigdata/hadoop
export HIVE_HOME=/bigdata/hive

2)、修改hive-site.xml

hive配置參考:
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration

metastore配置參考:
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-MetaStore

mv hive-default.xml.template hive-site.xml

將以下信息寫入到hive-site.xml文件中

<configuration>
   <property>
<name>javax.jdo.option.ConnectionURL</name>         <value>jdbc:mysql://bigdata1:3306/databasename?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
         <name>javax.jdo.option.ConnectionUserName</name>
         <value>username</value>
     </property>
     <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>password</value>
</property>
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
</configuration>

3)、修改日誌存放目錄

cd $HIVE_HOME/conf
cp hive-log4j2.properties.template hive-log4j2.properties
vim hive-log4j2.properties

修改property.hive.log.dir爲:

property.hive.log.dir=/data/logs/hive/${sys:user.name}

4)、設置環境變量

sudo vim /etc/profile

添加以下內容:

export HIVE_HOME=/bigdata/hive
export PATH=$HIVE_HOME/bin:$PATH
source /etc/profile

4、修改hive中jar包與hadoop中jar衝突

cp /bigdata/hive/lib/jline-2.12.jar /bigdata/hadoop-2.6.5/share/hadoop/yarn/lib
cd /bigdata/hadoop-2.6.5/share/hadoop/yarn/lib  
rm jline-0.09*.jar

注:如果不修改,啓動hive時報錯:
Terminal initialization failed; falling back to unsupported

5、添加mysql驅動

下載地址:http://dev.mysql.com/downloads/connector/j/
解壓,將mysql-connector-java-5.1.40-bin.jar上傳至bigdata1:/data/soft目錄下。

mv /data/soft/mysql-connector-java-5.1.40-bin.jar /bigdata/hive/lib

6、添加hive元數據至mysql中

1)、準備mysql環境

root用戶登入mysql

mysql –uroot –p

創建數據庫用於存儲hive的源數據

CREATE DATABASE `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

創建用戶,用於管理hive的元數據庫

CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 

將剛創建的hive元數據庫所有權限賦給剛創建的用戶:

GRANT all ON databasename.* TO 'username'@'%';

2)、初始化源數據

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

7、測試

1)、測試運行hive

hive

運行hive時會報:
Mon Nov 07 18:50:43 CST 2016 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
提示異常,因爲MySQL 5.5.45+, 5.6.26+ and 5.7.6+版本默認採用的ssl連接,修改如下:

vim $HIVE_HOME/conf/hive-site.xml
<property>
   <name>javax.jdo.option.ConnectionURL</name>         
   <value>jdbc:mysql://bigdata1:3306/databasename?useSSL=false</value>
</property>

重啓hive便可以了。

show databases;

便可以查看到一個default的數據庫。

注:如果使用hive1.2.1運行hive命令,且/etc/profile配置了SPARK_HOME環境變量
這裏寫圖片描述
會出現:ls: 無法訪問/bigdata/spark/lib/spark-assembly-*.jar: 沒有那個文件或目錄
其主要的原因是:當配置了SPARK_HOME,hive便會加載spark相關的JAR包。而自從spark升級到2.0.0之後,spark中的jar結構已經產生巨大變化,jar包由原來的lib目錄更改到了jars目錄,且spark-assembly-*.jar也拆分成多個jar包,所以肯定沒有辦法找到這個spark-assembly的JAR包。而hive2.1.0無此問題。
即將spark的jars目錄下的jar包都加載進去就不會報錯了,具體修改如下:

vim /bigdata/hive/bin/hive

修改前:
這裏寫圖片描述

將sparkAssemblyPath修改如下:

sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`

二、Sparksql使用hive元數據

1、編輯hive-site.xml

vim /bigdata/hive/conf/hive-site.xml

添加如下內容:

<property>   
 <name>hive.metastore.uris</name>   
 <value>thrift://bigdata1:9083</value>   
 <description>Thrift uri for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>

設置開啓hive的metastore服務。

2、spark配置

將hive-site.xml複製到spark的conf目錄下

cp /bigdata/hive/conf/hive-site.xml /bigdata/spark/conf

拷貝mysql驅動包至spark中:

cp /bigdata/hive/lib/mysql-connector-java-5.1.40-bin.jar /bigdata/spark/jars/

3、測試

1)、hive端操作

啓動hive的metastore

hive --service metastore

啓動sparksql

$SPARK_HOME/bin/spark-sql --master yarn --deploy-mode client

創建測試數據

vim /home/hadoop/students

添加如下內容

1 dupu 18
2 懶猴 20
3 藍走 40
4 libai 34

使用hive命令創建數據庫

hive

創建數據庫,及表並加載數據

create database mybase;

use mybase;

CREATE TABLE students(
     userid BIGINT,
     username STRING, 
     age int)
 ROW FORMAT DELIMITED
   FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE;

load data local inpath '/home/hadoop/students' into table mybase.students;

查詢剛創建的表信息:

select * from students;

這裏寫圖片描述
2)、sparksql端操作
啓動sparksql

$SPARK_HOME/bin/spark-sql --master yarn --deploy-mode client

執行以下sql

use mybase;
select * from students;

這裏寫圖片描述

至此sparksql使用hive元數據便配置成功了。


歡迎拍磚,相互學習,相互進步

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