目錄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
本文的安裝參照《Hive0.12.0安裝指南》,內容來源於官方的:GettingStarted,將Hive1.2.1安裝在Hadoop2.7.1上。本文將Hive配置成Server模式,並且使用MySQL作為元數據數據庫,遠程連接MySQL。
關於Hadoop2.7.1的安裝,請參見《Hadoop-2.7.1分布式安裝手冊》一文。
本文約定Hadoop被安裝在/data/hadoop/current,將Hive1.2.1的安裝到目錄/data/hadoop/hive(實際是指向/data/hadoop/hive-1.2.1-bin的軟鏈接)。將MySQL5.7.10安裝到目錄/data/mysql。在實際安裝部署時,可以指定為其它目錄。
10000
hive.server2.thrift.port,執行hiveserver2時會啟動它
9083
hive.metastore.uris,執行hive--servicemetastore時會啟動它
由於單台MySQL有單點問題,因此實際中需要配置成主備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。
創建數據庫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上操作一次。
下載網址:http://hive.apache.org/downloads.html,下載後的包名為:apache-hive-1.2.1-bin.tar.gz,然後將apache-hive-1.2.1-bin.tar.gz上傳到/data目錄下。
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
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驅動程序。
設置環境變量HIVE_HOME,並將Hive加入到PATH中:
exportHIVE_HOME=/data/hadoop/hive
exportPATH=$HIVE_HOME/bin:$PATH
進入/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
如果之前沒有設置好HADOOP_HOME環境變量,則可在hive-env.sh中,進行設置:
HADOOP_HOME=/data/hadoop/current
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或其它,並創建好目錄。
修改日志文件存放目錄,將日志目錄由/tmp/${user.name}改為/data/hadoop/hive/logs:
hive.log.dir=/data/hadoop/hive/logs
然後創建好目錄/data/hadoop/hive/logs。
修改日志文件存放目錄,將日志目錄由默認的/tmp/${user.name}改為/data/hadoop/hive/logs/exec:
hive.log.dir=/data/hadoop/hive/logs/exec
然後創建好目錄/data/hadoop/hive/logs/exec。
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>
將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時總會卡住,日志也沒有記錄特別原因,暫未去定位)。
以下內容來自官網(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;”。
可通過部署兩個hive來解決單點,元數據庫采用MySQL,MySQL和hive部署在相同機器上,兩個MySQL配置成主主同步。
hive為一主一熱備的方式,最好保證同一時刻只有一個hive提供服務,雖然很多情況下,兩個hive都提供服務也能正常工作。
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
以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目錄,完成以下修改即可:
復制一份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
復制一份sqoop-site-template.xml,命名為sqoop-site.xml,可不做任何修改。
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。
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
《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。