hive-3.0.0 安裝配置
hive是啥?
就是一個數據倉庫,提供了一套類SQL查詢的方法,讓開發人員來組織資料。
它把SQL轉換成了MapReduce,還對其進行了優化。果然是Hadoop中資料組織的利器。
下載地址:http://mirror.bit.edu.cn/apache/hive/
我的Hadoop是3.0.X。所以下載了個hive-3.0.0的。
解壓到一個目錄下。
配置環境變數 vi ~/.bash_profile
export HIVE_HOME=你的hive目錄
export PATH=$PATH:$HIVE_HOME/bin
儲存退出 :wq
匯入生效 source ~/.bash_profile
檢視版本 hive --version
看看能不能出來版本號?
進入到hive的conf目錄下。看有沒有hive-site.xml檔案,沒有的話拿default複製一份。
cp hive-default.xml.template hive-site.xml
修改hive配置檔案,關聯mysql。為啥?metastore_db,說是需要儲存這個資訊。
vi hive-site.xml
<!-- 插入連線MYSQL資訊 --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.1.68:3306/hive</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- 到此結束 --> <property> <name>hive.exec.script.wrapper</name> <value/> <description/> </property>
複製mysql的驅動程式到hive/lib下面
mysql-connector-java-5.1.39.jar
就是這個jar包。
開始測試執行是不是能連線正確。
>hive
>>報錯.3234行,96非法字元
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
at [row,col,system-id]: [3234,96,"file:/Users/xx/hive-3.0.0/conf/hive-site.xml"]
at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:621)
at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:491)
at com.ctc.wstx.sr.StreamScanner.reportIllegalChar(StreamScanner.java:2456)
at com.ctc.wstx.sr.StreamScanner.validateChar(StreamScanner.java:2403)
at com.ctc.wstx.sr.StreamScanner.resolveCharEnt(StreamScanner.java:2369)
at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java:1515)
at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2828)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1123)
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2960)
... 17 more
>hive 啟動,再報錯
Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at org.apache.hadoop.fs.Path.initialize(Path.java:259)
at org.apache.hadoop.fs.Path.<init>(Path.java:217)
at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:703)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:620)
at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:585)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:747)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
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:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
at org.apache.hadoop.util.RunJar.main(RunJar.java:158)
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at java.net.URI.checkPath(URI.java:1823)
at java.net.URI.<init>(URI.java:745)
at org.apache.hadoop.fs.Path.initialize(Path.java:256)
... 12 more
開啟配置檔案,
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
路徑似乎是有問題。應該是說儲存一個日誌的路徑。
將配置中所有的${system:java.io.tmpdir}替換為 {hive目錄}/tmp下
將配置中所有的${system:user.name}替換為 root(自己系統的使用者名稱)
再啟動
完成了。初始化一下schematool -dbType mysql -initSchema
Underlying cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown database 'hive'
沒有資料庫hive,建個數據庫hive
出現下面這個。說明初始化指令碼完成。
Initialization script completed
schemaTool completed
到此安裝完成