日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hive 1.2.1SparkSqoop安装指南

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive 1.2.1SparkSqoop安装指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

目錄 1

1.?前言 1

2.?約定 2

3.?服務端口 2

4.?安裝MySQL 2

4.1.?安裝MySQL 2

4.2.?創建Hive元數據庫 4

5.?安裝步驟 5

5.1.?下載Hive?1.2.1二進制安裝包 5

5.2.?安裝Hive 5

5.3.?安裝MySQL-Connector 5

5.4.?修改配置 5

5.4.1.?修改/etc/profile~/.profile 5

5.4.2.?修改其它配置文件 5

5.4.2.1.?修改hive-env.sh 6

5.4.2.2.?修改hive-site.xml 6

5.4.2.3.?修改hive-log4j.properties 7

5.4.2.4.?修改hive-exec-log4j.properties 7

6.?啟動運行 7

7.?遠程執行HSQL 8

8.?基本命令 8

9.?單點方案 9

10.?和Spark集成 9

11.?和Sqoop集成 9

11.1.?修改sqoop-env.sh 9

11.2.?修改sqoop-site.xml 10

11.3.?復制hadoopjar文件 10

11.4.?驗證測試 10

12.?常見錯誤 11

13.?相關文檔 14

?

1.?前言

本文的安裝參照《Hive?0.12.0安裝指南》,內容來源于官方的:GettingStarted,將Hive?1.2.1安裝在Hadoop?2.7.1上。本文將Hive配置成Server模式,并且使用MySQL作為元數據數據庫,遠程連接MySQL

關于Hadoop?2.7.1的安裝,請參見《Hadoop-2.7.1分布式安裝手冊》一文。

2.?約定

本文約定Hadoop被安裝在/data/hadoop/current,將Hive?1.2.1的安裝到目錄/data/hadoop/hive(實際是指向/data/hadoop/hive-1.2.1-bin的軟鏈接)。將MySQL?5.7.10安裝到目錄/data/mysql。在實際安裝部署時,可以指定為其它目錄。

3.?服務端口

10000

hive.server2.thrift.port,執行hiveserver2時會啟動它

9083

hive.metastore.uris,執行hive?--service?metastore時會啟動它

4.?安裝MySQL

由于單臺MySQL有單點問題,因此實際中需要配置成主備MySQL方式。

4.1.?安裝MySQL

本文MySQL被安裝在172.25.39.166機器上HiveMySQL來存儲元數據,因此需要先安裝好MySQL。這里安裝的是最新的MySQL?5.7.10,下載網址為:http://dev.mysql.com/downloads/mysql/,本文選擇是的“Linux?-?Generic”下的“Linux?-?Generic?(glibc?2.5)?(x86,?64-bit),?Compressed?TAR?Archive”,它的二進制安裝包名為mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

將二進制安裝包解壓后,可看到名為INSTALL-BINARY的文件,該文件有說明如何安裝MySQL,本文基本參照它進行的。

由于官方提供的二進制安裝包,編譯的時候指定的“--prefix”為“/usr/local/mysql”,所以最好將mysql安裝在/usr/local目錄下,否則安裝過程會容易遇到問題。但建立將數據目錄指定為一個足夠大的分區下的目錄。

當然data目錄也可以為軟鏈接方式到足夠大的分區目錄,并且推薦使用軟鏈接方式,否則在使用mysql命令時,經常需要指定參數“--datadir”,比如mysqldmysqld_safemysql_ssl_rsa_setup等都需要指定“--datadir”。

如果不是安裝在/usr/local/mysql,則需要為mysqld指定--basedir--character-sets-dir--language--lc-messages-dir--plugin-dir等眾多參數值。

如果不能root用戶安裝,則還需要為mysqld指定--slow-query-log-file--socket--pid-file--plugin-dir--general-log-file等參數值。

這些參數的默認值,都可以通過執行MySQL的“bin/mysqld?--verbose?--help”查看到。

#?MySQL安裝目錄為/usr/local/mysql,數據目錄實際為/data/mysql/data

#?注意需以root用戶安裝MySQL,如果不能root用戶安裝,容易遇到安裝麻煩

#?并請注意5.7.6之前的版本安裝略有不同!

?

#?新建mysql用戶組

groupadd?mysql

#?新建mysql用戶,并設置為不能作為linux登錄用戶

useradd?-r?-g?mysql?-s?/bin/false?mysql

?

#?進入到mysql安裝目錄

cd?/usr/local

#?解壓二進制安裝包

tar?xzf?mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

#?建立易記的、與版本無關的短鏈接

ln?-s?mysql-5.7.10-linux-glibc2.5-x86_64?mysql

?

#?進入到mysql目錄

cd?mysql

?

#?創建數據目錄

mkdir?-p?/data/mysql/data

#?建立數據目錄軟鏈接,讓指向/usr/local/mysql/data指向/data/mysql/data

ln?-s?/data/mysql/data?/usr/local/mysql/data

?

#?設置目錄權限

chmod?770?/data/mysql/data

chown?-R?mysql?/data/mysql/data

chgrp?-R?mysql?/data/mysql/data

chown?-R?mysql?.

chgrp?-R?mysql?.

?

#?初始化(成功執行完mysqld后,會提供一個臨時的root密碼,請務必記住)

#?另外需要注意臨時密碼會過期,所以需要盡量修改root密碼

#?進入MySQL?Cli后,執行下列命令即可修改成新密碼:

#?SET?PASSWORD?FOR?'root'@'localhost'?=?PASSWORD('new_password');

bin/mysqld?--initialize?--user=mysql?--explicit_defaults_for_timestamp

#?安裝和配置SSL

bin/mysql_ssl_rsa_setup

?

#?重置目錄權限

chown?-R?root?.

chown?-R?mysql?/data/mysql/data

?

#?啟動mysql

bin/mysqld_safe?--user=mysql?&

?

#?查看端口是否已起來(不修改配置和不指定參數--port,默認端口號為3306)

netstat?-lpnt|grep?3306

?

#?停止MySQL

support-files/mysql.server?stop

?

#?設置mysql隨著系統自啟動

cp?support-files/mysql.server?/etc/init.d/mysql.server

?

以上使用的都是MySQL默認配置,如果需要定制化,可以通過修改文件my.cnf來達成。MySQL?5.7.10不帶my.cnf,只有個support-files/my-default.cnf

通過執行命令“support-files/my-default.cnf”,可以了解到MySQL搜索my.cnf的順序依次為:/etc/my.cnf?/etc/mysql/my.cnf?/usr/local/mysql/etc/my.cnf?~/.my.cnf,這樣可以復制一份my-default.cnf,然后再修改,如:cp?support-files/my-default.cnf?/etc/my.cnf

4.2.?創建Hive元數據庫

創建數據庫hive

create?database?if?not?exists?hive;

?

創建數據庫用戶hive

create?user?hive?identified?by?'hive2016';

?

授權可以訪問數據庫hiveIP和用戶,其中localhost的實際IP172.25.39.166

grant?all?on?hive.*?to?'hive'@'localhost'?identified?by?'hive2016';

grant?all?on?hive.*?to?'hive'@'172.25.39.166'?identified?by?'hive2016';

grant?all?on?hive.*?to?'hive'@'172.25.40.171'?identified?by?'hive2016';

?

進入hive數據庫:

1)?本機進入:mysql?-uhive?-phive2016

2)?非本機進入:mysql?-uhive?-h172.25.39.166?-phive2016

?

注意如果配置了MySQL主主同步或其它同步,則如果同步的庫不包含mysql,則創建庫和用戶需要分別在不同的MySQL上操作一次。

5.?安裝步驟

5.1.?下載Hive?1.2.1二進制安裝包

下載網址:http://hive.apache.org/downloads.html,下載后的包名為:apache-hive-1.2.1-bin.tar.gz,然后將apache-hive-1.2.1-bin.tar.gz上傳到/data目錄下。

5.2.?安裝Hive

1)?切換到/data目錄:cd?/data

2)?解壓二進制安裝包:tar?xzf?apache-hive-1.2.1-bin.tar.gz

3)?改個名:mv?apache-hive-1.2.1-bin?hive-1.2.1

4)?建立軟鏈接:ln?-s?hive-1.2.1?hive

5.3.?安裝MySQL-Connector

MySQL-Connector下載網址:http://dev.mysql.com/downloads/connector/

選擇“Connector/J”,接著選擇“Platform?Independent”,本文下載的是“mysql-connector-java-5.1.38.tar.gz”。

壓縮包“mysql-connector-java-5.1.38.tar.gz”中有個mysql-connector-java-5.1.38-bin.jar,解壓后將mysql-connector-java-5.1.38-bin.jar上傳到Hivelib目錄下,這個是MySQLJDBC驅動程序。

5.4.?修改配置

5.4.1.?修改/etc/profile~/.profile

設置環境變量HIVE_HOME,并將Hive加入到PATH中:

export?HIVE_HOME=/data/hadoop/hive

export?PATH=$HIVE_HOME/bin:$PATH

5.4.2.?修改其它配置文件

進入/data/hadoop/hive/conf目錄,可以看到如下:

hadoop@VM-40-171-sles10-64:~/hive/conf>?ls

hive-default.xml.template??hive-exec-log4j.properties.template

hive-env.sh.template???????hive-log4j.properties.template

?

可以看到4個模板文件,復制并重命名成配置文件:

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

cp?hive-default.xml.template?hive-site.xml

cp?hive-log4j.properties.template?hive-log4j.properties

cp?hive-exec-log4j.properties.template?hive-exec-log4j.properties

5.4.2.1.?修改hive-env.sh

如果之前沒有設置好HADOOP_HOME環境變量,則可在hive-env.sh中,進行設置:

HADOOP_HOME=/data/hadoop/current

5.4.2.2.?修改hive-site.xml

1)?修改javax.jdo.option.ConnectionURL

將值設置為:

jdbc:mysql://172.25.39.166:3306/hive?useSSL=false,

注意加上“useSSL=false”,另外還有諸于參數characterEncoding=UTF-8等。

2)?修改javax.jdo.option.ConnectionDriverName

將值設置為:com.mysql.jdbc.Driver。

3)?修改javax.jdo.option.ConnectionUserName

將值設置為訪問hive數據庫的用戶名hive<value>hive</value>

4)?修改javax.jdo.option.ConnectionPassword

將值設置為訪問hive數據庫的密碼:<value>hive2016</value>

5)?修改hive.metastore.schema.verification

該值試情況進行修改。

6)?修改hive.zookeeper.quorum

將值設置為:10.12.154.77,10.12.154.78,10.12.154.79,ZooKeeper被安裝在這三臺機器上。建議使用機器名,而不是IP,因為機器退役可能導致IP變換。

7)?修改hive.metastore.uris

將值設置為:thrift://172.25.40.171:90839083Hive元數據的RPC服務端口。

8)?修改hive.metastore.warehouse.dir

將值設置為:/data/hadoop/hive/warehouse,注意啟動前,需要創建好該目錄(mkdir?/data/hadoop/hive/warehouse)。

9)?修改hive.server2.thrift.bind.host

該值默認為localhost,如果需要在其它機器遠程訪問Hive,則需要將它改成IP地址,本文將它改成172.25.40.171,可以考慮為0.0.0.0

10)?修改hive.exec.scratchdir

這一步可選,可直接使用默認值/tmp/hive。設置為:/data/hadoop/hive/tmp或其它,并創建好目錄。

11)?修改hive.exec.local.scratchdir

設置為:/data/hadoop/hive/tmp/scratch或其它,并創建好目錄。

12)?修改hive.downloaded.resources.dir

設置為:/data/hadoop/hive/tmp/resources或其它,并創建好目錄。

13)?修改hive.querylog.location

設置為:/data/hadoop/hive/tmp/querylog或其它,并創建好目錄。

14)?修改hive.server2.logging.operation.log.location

設置為:/data/hadoop/hive/tmp/operation或其它,并創建好目錄。

5.4.2.3.?修改hive-log4j.properties

修改日志文件存放目錄,將日志目錄由/tmp/${user.name}改為/data/hadoop/hive/logs

hive.log.dir=/data/hadoop/hive/logs

?

然后創建好目錄/data/hadoop/hive/logs

5.4.2.4.?修改hive-exec-log4j.properties

修改日志文件存放目錄,將日志目錄由默認的/tmp/${user.name}改為/data/hadoop/hive/logs/exec

hive.log.dir=/data/hadoop/hive/logs/exec

?

然后創建好目錄/data/hadoop/hive/logs/exec

6.?啟動運行

1)?初始化metastore

安裝配置好后,在啟動Hive服務端之前,需要在服務端執行一次“schematool?-dbType?mysql?-initSchema”,以完成對metastore的初始化。

如果配置了MySQL主主同步,則只需要一臺hive機器上執行,重復執行會報錯。

2)?啟動metastore

執行命令:hive?--service?metastore?&

3)?啟動Hive服務

執行:hiveserver2?&

4)?進入Hive命令行操作界面(類似于mysql

執行:hive

?

除了使用hive命令行操作界面之外,hiveserver2還提供了beeline(hive是用戶名,hive2016是密碼,可以從HiveServer2+Clients獲得更多信息):

hadoop@VM-40-171-sles10-64:~/hive/bin>?./beeline?

Beeline?version?1.2.1?by?Apache?Hive

beeline>?!connect?jdbc:hive2://172.25.40.171:10000?hive?hive2016?org.apache.hive.jdbc.HiveDriver

Connecting?to?jdbc:hive2://172.25.40.171:10000

SLF4J:?Class?path?contains?multiple?SLF4J?bindings.

SLF4J:?Found?binding?in?[jar:file:/data/hadoop/hadoop-2.7.1/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J:?Found?binding?in?[jar:file:/data/hadoop/hive-1.2.1-bin/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J:?See?http://www.slf4j.org/codes.html#multiple_bindings?for?an?explanation.

SLF4J:?Actual?binding?is?of?type?[org.slf4j.impl.Log4jLoggerFactory]

Connected?to:?Hive?(version?1.2.1)

Driver:?Hive?(version?1.2.1)

Transaction?isolation:?TRANSACTION_REPEATABLE_READ

0:?jdbc:hive2://172.25.40.171:10000>?select?*?from?invites?limit?2;

+------+----------+-------+

|?foo??|???bar????|??ds???|

+------+----------+-------+

|?474??|?val_475??|?2014??|

|?281??|?val_282??|?2014??|

+------+----------+-------+

2?rows?selected?(1.779?seconds)

0:?jdbc:hive2://172.25.40.171:10000>?

7.?遠程執行HSQL

hive/binhive/libhive/confhive/examples打包,如:tar?czf?hive-bin.tar.gz?hive/bin?hive/lib?hive/conf?hive/examples

然后將hive-bin.tar.gz上傳到其它機器,借助beeline即可遠程執行HSQL(用hive可能會遇到問題,本文在操作時,使用hive,在執行HSQL時總會卡住,日志也沒有記錄特別原因,暫未去定位)。

8.?基本命令

以下內容來自官網(GettingStarted),注意命令不區分大小寫:

CREATE?TABLE?pokes?(foo?INT,?bar?STRING);

CREATE?TABLE?invites?(foo?INT,?bar?STRING)?PARTITIONED?BY?(ds?STRING);

SHOW?TABLES;

SHOW?TABLES?'.*s';

DESCRIBE?invites;

DROP?TABLE?pokes;

?

Hive的安裝目錄下有個examples子目錄,存儲了示例用到的數據文件等。測試往表invites中加載數據,將文件../examples/files/kv2.txt加載到表invites中:

LOAD?DATA?LOCAL?INPATH?'../examples/files/kv2.txt'?OVERWRITE?INTO?TABLE?invites?PARTITION?(ds='2014');

?

可以通過“select?*?from?invites;”來檢驗加載情況,或者執行“select?count(1)?from?invites;”。

9.?單點方案

可通過部署兩個hive來解決單點,元數據庫采用MySQLMySQLhive部署在相同機器上,兩個MySQL配置成主主同步。

hive為一主一熱備的方式,最好保證同一時刻只有一個hive提供服務,雖然很多情況下,兩個hive都提供服務也能正常工作。

10.?和Spark集成

Spark集成Hive非常簡單,只需以下幾步:

1)?在spark-env.sh中加入HIVE_HOME,如:export?HIVE_HOME=/data/hadoop/hive

2)?將Hivehive-site.xmlhive-log4j.properties兩個文件復制到Sparkconf目錄下。

?

完成后,再次執行spark-sql進入SparkSQL?Cli,運行命令show?tables即可看到在Hive中創建的表。

示例:

./spark-sql?--master?yarn?--driver-class-path?/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

11.?和Sqoop集成

sqoop-1.4.6.bin__hadoop-2.0.4-alpha為例,支持增量導入,不但可以將數據導入到Hive中,還可以往HBase導數據,也可以將數據從DB導入到HDFS存儲。總之,Sqoop功能十分強大,但這里僅簡單介紹。

Sqoop的官網(下載網址:http://www.apache.org/dyn/closer.lua/sqoop/1.4.6)下載sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

解壓,然后進入Sqoopconf目錄,完成以下修改即可:

11.1.?修改sqoop-env.sh

復制一份sqoop-env-template.sh,命名為sqoop-env.sh。在sqoop-env.sh中設置以下環境變量:

1)?HADOOP_COMMON_HOME

值為Hadoop的安裝目錄,示例:export?HADOOP_COMMON_HOME=/data/hadoop

2)?HADOOP_MAPRED_HOME

值為hadoop-common-*.tar文件所在目錄,位于Hadoop安裝目錄之下。

示例:export?HADOOP_MAPRED_HOME=/data/hadoop/share/hadoop/common

3)?HBASE_HOME

值為HBase的安裝目錄,示例:export?HBASE_HOME=/data/hbase

4)?HIVE_HOME

值為Hive的安裝目錄,示例:export?HIVE_HOME=/data/hive

5)?ZOOCFGDIR

值為Zookeeper的配置目錄,示例:export?ZOOCFGDIR=/data/zookeeper/conf

11.2.?修改sqoop-site.xml

復制一份sqoop-site-template.xml,命名為sqoop-site.xml,可不做任何修改。

11.3.?復制hadoopjar文件

這一步可先不操作,但如果遇到“Please?check?your?configuration?for?mapreduce.framework.name?and?the?correspond?server?addresses”錯誤,則需要將hadoop-mapreduce-client-common-2.7.1.jarhadoop-mapreduce-client-core-2.7.1.jarhadoop-mapreduce-client-jobclient-2.7.1.jarhadoop-mapreduce-client-shuffle-2.7.1.jar復制到sqooplib目錄。

11.4.?驗證測試

1)?列出MySQL數據庫

./sqoop?list-databases?--connect?jdbc:mysql://127.0.0.1:3306/?--username?zhangsan?--password?zhangsan2016

?

2)?根據MySQL表創建Hive

./sqoop?create-hive-table?--connect?jdbc:mysql://127.0.0.1:3306/test?--username?zhangsan?--password?zhangsan2016?--table?t_test?--hive-table?t_test_2016

?

如果Hive表需要分區,可以通過參數--hive-partition-key--hive-partition-value?來指定。

?

如果需覆蓋已存在的Hive表,加上參數“--hive-overwrite”即可。“--hive-partition-key”值為分區名,默認為string型,“–hive-partition-value”為分區的值。

?

3)?將數據從MySQL導入到Hive

./sqoop?import?--connect?jdbc:mysql://127.0.0.1:3306/test?--username?zhangsan?--password?'zhangsan2016'?--table?t_test?--hive-import?-m?6?--hive-table?t_test_2016?--direct

?

注意為運行sqoop的機器授權訪問MySQL,可能也需要為運行MapReduce的機器授權。

建議帶上參數“--direct”,表示使用快速模式,比如它會利用MySQL的工具mysqldump導出數據。

-m”表示啟用多少個map并行導入數據,默認是4個,最好不要將數字設置為高于集群的最大Map數。

“–table”用來指定要導入的DB表名,“--hive-import”表示從DB導入數據到Hive。還可以借助參數“--query”使用SQL有條件的從DB中導出。

?

如果需要指定字符集,使用參數“--default-character-set”,如:--default-character-set?UTF-8

4)?增量從MySQLHive導數據

./sqoop?import?--connect?jdbc:mysql://127.0.0.1:3306/test?--username?zhangsan?--password?'zhangsan2016'??--table?t_test?--hive-import?--hive-table?t_test_2016?--split-by?f_id?--incremental?lastmodified?--check-column?f_donate_time?--last-value?'2016-03-01?00:00:00'

建議增量時,不要帶參數“-m”,因為如指定了“-m”,對應的導入會在hdfs上差生相應的中間結果,當下一次再次執行job時,則會報“output?directory?is?exist”錯誤。

12.?常見錯誤

1)?Please?check?your?configuration?for?mapreduce.framework.name?and?the?correspond?server?addresses

在運行sqoopMySQLHive導數據時,如果報這個錯誤,一是要檢查mapred-site.xml中的“mapreduce.framework.name”是否為yarn。其次可以嘗試將hadoopshare/hadoop/mapreduce目錄下的四個文件:hadoop-mapreduce-client-common-2.7.1.jarhadoop-mapreduce-client-core-2.7.1.jarhadoop-mapreduce-client-jobclient-2.7.1.jarhadoop-mapreduce-client-shuffle-2.7.1.jar復制到sqooplib目錄下。

2)?TIMESTAMP?with?implicit?DEFAULT?value?is?deprecated

執行MySQL的“bin/mysqld?--initialize?--user=mysql”時報的錯誤。

原因是從MySQL?5.6版本開始,timestamp的默認值已被標為deprecated,即如果類型為timestamp的字段,如果沒有明確聲明默認值為NULL,則默認為NOT?NULL。如果設置timestamp字段為NULL,則自動存儲當前的timestamp

3)?Can't?find?error-message?file?'/usr/local/mysql/share/errmsg.sys'

執行MySQL的“bin/mysqld?--initialize?--user=mysql?--explicit_defaults_for_timestamp”時報的錯誤。

這可能是因為之前有執行過,導致data目錄不為空,通過“bin/mysqld?--verbose?--help|grep?datadir”可以查看到默認的數據目錄為/var/lib/mysql/。需要保證/var/lib/mysql/目錄為空。或者通過指定參數--datadir改變數據目錄,如“bin/mysqld?--initialize?--user=mysql?--explicit_defaults_for_timestamp?--datadir=/data/mysql/data”。

4)?Can't?find?error-message?file?'/usr/local/mysql/share/errmsg.sys'

對于錯誤:

Can't?find?error-message?file?'/usr/local/mysql/share/errmsg.sys'.?Check?error-message?file?location?and?'lc-messages-dir'?configuration?directive.

從官網下載的MySQL默認安裝目錄為/usr/local/mysql,如果實際為其它目錄,則建議通過參數--basedir指定,否則會遇到不少安裝問題。通過執行“bin/mysqld?--verbose?--help|grep?basedir”即可看到“--basedir”的默認值為/usr/local/mysql/

5)?Failed?to?connect?to?the?MetaStore?Server

如果運行hiveserver2,遇到下列錯誤后,推薦打開DEBUG日志級別,以更查看更詳細的信息,將日志配置文件hive-log4j.properties中的“hive.root.logger=WARN,DRFA”改成“hive.root.logger=DEBUG,WARN,DRFA”即可。

2014-04-23?06:00:04,169?WARN??hive.metastore?(HiveMetaStoreClient.java:open(291))?-?Failed?to?connect?to?the?MetaStore?Server...

2014-04-23?06:00:05,173?WARN??hive.metastore?(HiveMetaStoreClient.java:open(291))?-?Failed?to?connect?to?the?MetaStore?Server...

2014-04-23?06:00:06,177?WARN??hive.metastore?(HiveMetaStoreClient.java:open(291))?-?Failed?to?connect?to?the?MetaStore?Server...

2014-04-23?06:00:07,181?WARN??hive.metastore?(HiveMetaStoreClient.java:open(291))?-?Failed?to?connect?to?the?MetaStore?Server...

2014-04-23?06:00:08,185?WARN??hive.metastore?(HiveMetaStoreClient.java:open(291))?-?Failed?to?connect?to?the?MetaStore?Server...

2014-04-23?06:00:09,194?ERROR?service.CompositeService?(CompositeService.java:start(74))?-?Error?starting?services?HiveServer2

org.apache.hive.service.ServiceException:?Unable?to?connect?to?MetaStore!

????????at?org.apache.hive.service.cli.CLIService.start(CLIService.java:85)

????????at?org.apache.hive.service.CompositeService.start(CompositeService.java:70)

????????at?org.apache.hive.service.server.HiveServer2.start(HiveServer2.java:73)

????????at?org.apache.hive.service.server.HiveServer2.main(HiveServer2.java:103)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke0(Native?Method)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

????????at?sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

????????at?java.lang.reflect.Method.invoke(Method.java:483)

????????at?org.apache.hadoop.util.RunJar.main(RunJar.java:212)

?

修改后,再次運行hiveserver2,日志變詳細了,猜測是metastore沒有起來,可以通過執行“hive?--service?metastore”來啟動metastore

2014-04-23?06:04:27,053?INFO??hive.metastore?(HiveMetaStoreClient.java:open(244))?-?Trying?to?connect?to?metastore?with?URI?thrift://172.25.40.171:9083

2014-04-23?06:04:27,085?WARN??hive.metastore?(HiveMetaStoreClient.java:open(288))?-?Failed?to?connect?to?the?MetaStore?Server...

org.apache.thrift.transport.TTransportException:?java.net.ConnectException:?拒絕連接

????????at?org.apache.thrift.transport.TSocket.open(TSocket.java:185)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:283)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:164)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:104)

????????at?org.apache.hive.service.cli.CLIService.start(CLIService.java:82)

????????at?org.apache.hive.service.CompositeService.start(CompositeService.java:70)?

????????at?org.apache.hive.service.server.HiveServer2.start(HiveServer2.java:73)

????????at?org.apache.hive.service.server.HiveServer2.main(HiveServer2.java:103)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke0(Native?Method)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

????????at?sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

????????at?java.lang.reflect.Method.invoke(Method.java:483)

????????at?org.apache.hadoop.util.RunJar.main(RunJar.java:212)

?

6)?Version?information?not?found?in?metastore

執行“./hive?--service?metastore”報下面這樣的錯誤原因是未對metastore進行初始化,需要執行一次“schematool?-dbType?mysql?-initSchema”。

SLF4J:?Actual?binding?is?of?type?[org.slf4j.impl.Log4jLoggerFactory]

MetaException(message:Version?information?not?found?in?metastore.?)

????????at?org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:5638)

????????at?org.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:5622)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke0(Native?Method)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

????????at?sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

????????at?java.lang.reflect.Method.invoke(Method.java:483)

????????at?org.apache.hadoop.hive.metastore.RetryingRawStore.invoke(RetryingRawStore.java:124)

????????at?com.sun.proxy.$Proxy2.verifySchema(Unknown?Source)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:403)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:441)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:326)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.<init>(HiveMetaStore.java:286)

????????at?org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:54)

????????at?org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:59)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStore.newHMSHandler(HiveMetaStore.java:4060)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:4263)

????????at?org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:4197)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke0(Native?Method)

????????at?sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

????????at?sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

????????at?java.lang.reflect.Method.invoke(Method.java:483)

????????at?org.apache.hadoop.util.RunJar.main(RunJar.java:212)

7)?java.net.URISyntaxException:?Relative?path?in?absolute?URI:?${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

解決辦法:將hive-site.xml中所有的system:java.io.tmpdir都換成絕對路徑,hive-1.2.1共有4處。

8)?Establishing?SSL?connection?without?server's?identity?verification?is?not?recommended

問題現象:

Wed?Feb?17?10:39:37?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.

解決辦法是hive-site.xml中的配置項javax.jdo.option.ConnectionURL值需要加上“useSSL=false”,如:

jdbc:mysql://127.0.0.1:3306/hive?characterEncoding=UTF-8;useSSL=false

9)?SPARK_CLASSPATH?was?detected

SPARK_CLASSPATH?was?detected?(set?to?'/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar:').

This?is?deprecated?in?Spark?1.0+.

Please?instead?use:

?-?./spark-submit?with?--driver-class-path?to?augment?the?driver?classpath

?-?spark.executor.extraClassPath?to?augment?the?executor?classpath

意思是不推薦在spark-env.sh中設置環境變量SPARK_CLASSPATH,可以改成如下推薦的方式:

./spark-sql?--master?yarn?--driver-class-path?/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar

13.?相關文檔

HBase-0.98.0分布式安裝指南》

Hive?1.2.1安裝指南》

ZooKeeper-3.4.6分布式安裝指南》

Hadoop?2.3.0源碼反向工程》

《在Linux上編譯Hadoop-2.7.1

Accumulo-1.5.1安裝指南》

Drill?1.0.0安裝指南》

Shark?0.9.1安裝指南》

?

更多,敬請關注技術博客:http://aquester.cublog.cn

轉載于:https://www.cnblogs.com/aquester/p/9891544.html

總結

以上是生活随笔為你收集整理的Hive 1.2.1SparkSqoop安装指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。