程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Hive 1.2.1&Spark&Sqoop安裝指南

Hive 1.2.1&Spark&Sqoop安裝指南

編輯:關於PHP編程

Hive 1.2.1&Spark&Sqoop安裝指南


Hive 1.2.1&Spark&Sqoop安裝指南.pdf

目錄

目錄1

1.前言1

2.約定2

3.服務端口2

4.安裝MySQL 2

4.1.安裝MySQL 2

4.2.創建Hive元數據庫 4

5.安裝步驟4

5.1.下載Hive1.2.1二進制安裝包 4

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.驗證測試10

12.常見錯誤10

13.相關文檔14

1.前言

本文的安裝參照《Hive0.12.0安裝指南》,內容來源於官方的:GettingStarted,將Hive1.2.1安裝在Hadoop2.7.1上。本文將Hive配置成Server模式,並且使用MySQL作為元數據數據庫,遠程連接MySQL。

關於Hadoop2.7.1的安裝,請參見《Hadoop-2.7.1分布式安裝手冊》一文。

2.約定

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

3.服務端口

10000

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

9083

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

4.安裝MySQL

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

4.1.安裝MySQL

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

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

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

當然data目錄也可以為軟鏈接方式到足夠大的分區目錄,並且推薦使用軟鏈接方式,否則在使用mysql命令時,經常需要指定參數“--datadir”,比如mysqld、mysqld_safe和mysql_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用戶組

groupaddmysql

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

useradd-r-gmysql-s/bin/falsemysql

#進入到mysql安裝目錄

cd/usr/local

#解壓二進制安裝包

tarxzfmysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

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

ln-smysql-5.7.10-linux-glibc2.5-x86_64mysql

#進入到mysql目錄

cdmysql

#創建數據目錄

mkdir-p/data/mysql/data

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

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

#設置目錄權限

chmod770/data/mysql/data

chown-Rmysql/data/mysql/data

chgrp-Rmysql/data/mysql/data

chown-Rmysql.

chgrp-Rmysql.

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

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

#進入MySQLCli後,執行下列命令即可修改成新密碼:

#SETPASSWORDFOR'root'@'localhost'=PASSWORD('new_password');

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

#安裝和配置SSL

bin/mysql_ssl_rsa_setup

#重置目錄權限

chown-Rroot.

chown-Rmysql/data/mysql/data

#啟動mysql

bin/mysqld_safe--user=mysql&

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

netstat-lpnt|grep3306

#停止MySQL

support-files/mysql.serverstop

#設置mysql隨著系統自啟動

cpsupport-files/mysql.server/etc/init.d/mysql.server

以上使用的都是MySQL默認配置,如果需要定制化,可以通過修改文件my.cnf來達成。MySQL5.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,然後再修改,如:cpsupport-files/my-default.cnf/etc/my.cnf。

4.2.創建Hive元數據庫

創建數據庫hive:

createdatabaseifnotexistshive;

創建數據庫用戶hive:

createuserhiveidentifiedby'hive2016';

授權可以訪問數據庫hive的IP和用戶,其中localhost的實際IP為172.25.39.166:

grantallonhive.*to'hive'@'localhost'identifiedby'hive2016';

grantallonhive.*to'hive'@'172.25.39.166'identifiedby'hive2016';

grantallonhive.*to'hive'@'172.25.40.171'identifiedby'hive2016';

進入hive數據庫:

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

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

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

5.安裝步驟

5.1.下載Hive1.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)解壓二進制安裝包:tarxzfapache-hive-1.2.1-bin.tar.gz

3)改個名:mvapache-hive-1.2.1-binhive-1.2.1

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

5.3.安裝MySQL-Connector

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

選擇“Connector/J”,接著選擇“PlatformIndependent”,本文下載的是“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上傳到Hive的lib目錄下,這個是MySQL的JDBC驅動程序。

5.4.修改配置

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

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

exportHIVE_HOME=/data/hadoop/hive

exportPATH=$HIVE_HOME/bin:$PATH

5.4.2.修改其它配置文件

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

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

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

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

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

cphive-env.sh.templatehive-env.sh

cphive-default.xml.templatehive-site.xml

cphive-log4j.properties.templatehive-log4j.properties

cphive-exec-log4j.properties.templatehive-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:9083,9083為Hive元數據的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-dbTypemysql-initSchema”,以完成對metastore的初始化。

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

2)啟動metastore

執行命令:hive--servicemetastore&

3)啟動Hive服務

執行:hiveserver2&。

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

執行:hive

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

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

Beelineversion1.2.1byApacheHive

beeline>!connectjdbc:hive2://172.25.40.171:10000hivehive2016org.apache.hive.jdbc.HiveDriver

Connectingtojdbc:hive2://172.25.40.171:10000

SLF4J:ClasspathcontainsmultipleSLF4Jbindings.

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

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

SLF4J:Seehttp://www.slf4j.org/codes.html#multiple_bindingsforanexplanation.

SLF4J:Actualbindingisoftype[org.slf4j.impl.Log4jLoggerFactory]

Connectedto:Hive(version1.2.1)

Driver:Hive(version1.2.1)

Transactionisolation:TRANSACTION_REPEATABLE_READ

0:jdbc:hive2://172.25.40.171:10000>select*frominviteslimit2;

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

|foo|bar|ds|

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

|474|val_475|2014|

|281|val_282|2014|

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

2rowsselected(1.779seconds)

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

7.遠程執行HSQL

將hive/bin、hive/lib、hive/conf和hive/examples打包,如:tarczfhive-bin.tar.gzhive/binhive/libhive/confhive/examples。

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

8.基本命令

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

CREATETABLEpokes(fooINT,barSTRING);

CREATETABLEinvites(fooINT,barSTRING)PARTITIONEDBY(dsSTRING);

SHOWTABLES;

SHOWTABLES'.*s';

DESCRIBEinvites;

DROPTABLEpokes;

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

LOADDATALOCALINPATH'../examples/files/kv2.txt'OVERWRITEINTOTABLEinvitesPARTITION(ds='2014');

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

9.單點方案

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

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

10.和Spark集成

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

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

2)將Hive的hive-site.xml和hive-log4j.properties兩個文件復制到Spark的conf目錄下。

完成後,再次執行spark-sql進入Spark的SQLCli,運行命令showtables即可看到在Hive中創建的表。

示例:

./spark-sql--masteryarn--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。

解壓,然後進入Sqoop的conf目錄,完成以下修改即可:

11.1.修改sqoop-env.sh

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

1)HADOOP_COMMON_HOME

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

2)HADOOP_MAPRED_HOME

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

示例:exportHADOOP_MAPRED_HOME=/data/hadoop/share/hadoop/common

3)HBASE_HOME

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

4)HIVE_HOME

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

5)ZOOCFGDIR

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

11.2.修改sqoop-site.xml

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

11.3.驗證測試

1)列出MySQL數據庫

./sqooplist-databases--connectjdbc:mysql://127.0.0.1:3306/--usernamezhangsan--passwordzhangsan2016

2)根據MySQL表創建Hive表

./sqoopcreate-hive-table--connectjdbc:mysql://127.0.0.1:3306/test--usernamezhangsan--passwordzhangsan2016--tablet_test--hive-tablet_test_2016

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

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

3)將數據從MySQL導入到Hive

./sqoopimport--connectjdbc:mysql://127.0.0.1:3306/test--usernamezhangsan--password'zhangsan2016'--tablet_test--hive-import-m6--hive-tablet_test_2016--direct

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

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

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

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

12.常見錯誤

1)TIMESTAMPwithimplicitDEFAULTvalueisdeprecated

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

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

2)Can'tfinderror-messagefile'/usr/local/mysql/share/errmsg.sys'

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

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

3)Can'tfinderror-messagefile'/usr/local/mysql/share/errmsg.sys'

對於錯誤:

Can'tfinderror-messagefile'/usr/local/mysql/share/errmsg.sys'.Checkerror-messagefilelocationand'lc-messages-dir'configurationdirective.

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

4)FailedtoconnecttotheMetaStoreServer

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

2014-04-2306:00:04,169WARNhive.metastore(HiveMetaStoreClient.java:open(291))-FailedtoconnecttotheMetaStoreServer...

2014-04-2306:00:05,173WARNhive.metastore(HiveMetaStoreClient.java:open(291))-FailedtoconnecttotheMetaStoreServer...

2014-04-2306:00:06,177WARNhive.metastore(HiveMetaStoreClient.java:open(291))-FailedtoconnecttotheMetaStoreServer...

2014-04-2306:00:07,181WARNhive.metastore(HiveMetaStoreClient.java:open(291))-FailedtoconnecttotheMetaStoreServer...

2014-04-2306:00:08,185WARNhive.metastore(HiveMetaStoreClient.java:open(291))-FailedtoconnecttotheMetaStoreServer...

2014-04-2306:00:09,194ERRORservice.CompositeService(CompositeService.java:start(74))-ErrorstartingservicesHiveServer2

org.apache.hive.service.ServiceException:UnabletoconnecttoMetaStore!

atorg.apache.hive.service.cli.CLIService.start(CLIService.java:85)

atorg.apache.hive.service.CompositeService.start(CompositeService.java:70)

atorg.apache.hive.service.server.HiveServer2.start(HiveServer2.java:73)

atorg.apache.hive.service.server.HiveServer2.main(HiveServer2.java:103)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:483)

atorg.apache.hadoop.util.RunJar.main(RunJar.java:212)

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

2014-04-2306:04:27,053INFOhive.metastore(HiveMetaStoreClient.java:open(244))-TryingtoconnecttometastorewithURIthrift://172.25.40.171:9083

2014-04-2306:04:27,085WARNhive.metastore(HiveMetaStoreClient.java:open(288))-FailedtoconnecttotheMetaStoreServer...

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

atorg.apache.thrift.transport.TSocket.open(TSocket.java:185)

atorg.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:283)

atorg.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:164)

atorg.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:104)

atorg.apache.hive.service.cli.CLIService.start(CLIService.java:82)

atorg.apache.hive.service.CompositeService.start(CompositeService.java:70)

atorg.apache.hive.service.server.HiveServer2.start(HiveServer2.java:73)

atorg.apache.hive.service.server.HiveServer2.main(HiveServer2.java:103)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:483)

atorg.apache.hadoop.util.RunJar.main(RunJar.java:212)

5)Versioninformationnotfoundinmetastore

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

SLF4J:Actualbindingisoftype[org.slf4j.impl.Log4jLoggerFactory]

MetaException(message:Versioninformationnotfoundinmetastore.)

atorg.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:5638)

atorg.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:5622)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:483)

atorg.apache.hadoop.hive.metastore.RetryingRawStore.invoke(RetryingRawStore.java:124)

atcom.sun.proxy.$Proxy2.verifySchema(UnknownSource)

atorg.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:403)

atorg.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:441)

atorg.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:326)

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

atorg.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:54)

atorg.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:59)

atorg.apache.hadoop.hive.metastore.HiveMetaStore.newHMSHandler(HiveMetaStore.java:4060)

atorg.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:4263)

atorg.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:4197)

atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)

atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

atjava.lang.reflect.Method.invoke(Method.java:483)

atorg.apache.hadoop.util.RunJar.main(RunJar.java:212)

6)java.net.URISyntaxException:RelativepathinabsoluteURI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

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

7)EstablishingSSLconnectionwithoutserver'sidentityverificationisnotrecommended

問題現象:

WedFeb1710:39:37CST2016WARN:EstablishingSSLconnectionwithoutserver'sidentityverificationisnotrecommended.AccordingtoMySQL5.5.45+,5.6.26+and5.7.6+requirementsSSLconnectionmustbeestablishedbydefaultifexplicitoptionisn'tset.ForcompliancewithexistingapplicationsnotusingSSLtheverifyServerCertificatepropertyissetto'false'.YouneedeithertoexplicitlydisableSSLbysettinguseSSL=false,orsetuseSSL=trueandprovidetruststoreforservercertificateverification.

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

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

8)SPARK_CLASSPATHwasdetected

SPARK_CLASSPATHwasdetected(setto'/data/hadoop/hive/lib/mysql-connector-java-5.1.38-bin.jar:').

ThisisdeprecatedinSpark1.0+.

Pleaseinsteaduse:

-./spark-submitwith--driver-class-pathtoaugmentthedriverclasspath

-spark.executor.extraClassPathtoaugmenttheexecutorclasspath

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

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

13.相關文檔

《HBase-0.98.0分布式安裝指南》

《Hive1.2.1安裝指南》

《ZooKeeper-3.4.6分布式安裝指南》

《Hadoop2.3.0源碼反向工程》

《在Linux上編譯Hadoop-2.7.1》

《Accumulo-1.5.1安裝指南》

《Drill1.0.0安裝指南》

《Shark0.9.1安裝指南》

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


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved