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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux hive创建数据库失败,Hive本地模式安装及遇到的问题和解决方案

發布時間:2025/3/15 linux 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux hive创建数据库失败,Hive本地模式安装及遇到的问题和解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Apache Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供簡單的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

Hive有三種運行模式:

1.內嵌模式:將元數據保存在本地內嵌的Derby數據庫中,這得使用Hive最簡單的方式,不過使用內嵌模式的話,缺點也比較明顯,因為一個內嵌的Derby數據庫每次只能訪問一個數據文件,這也就意味著不支持多會話連接。這種情況應對本地測試可能都有所不足,僅供初學者熟悉應用Hive;

2.本地模式:這種模式是將元數據庫保存在本地的獨立數據庫中(比如說MySQL),這樣就能夠支持多會話和多用戶連接;

3.遠程模式:如果我們的Hive客戶端比較多,在每個客戶端都安裝MySQL服務還是會造成一定的冗余和浪費,這種情況下,就可以更進一步,將MySQL也獨立出來,將元數據保存在遠端獨立的MySQL服務中。

因為只有一臺電腦,所以本文主要介紹Hive的本地模式安裝。

安裝前準備

1.正確安裝Hadoop

2.下載文件:

apache-hive-1.1.0-bin.tar.gz:https://hive.apache.org/downloads.html

JDBC:http://download.softagency.net/MySQL/Downloads/Connector-J/

解壓文件并配置Hive環境變量

解壓文件

tar zxf apache-hive-1.1.0-bin.tar.gz

mv apache-hive-1.1.0-bin /usr/local/

tar zxf mysql-connector-java-5.1.35.tar.gz

配置環境變量vim /etc/profile

export HIVE_HOME=/usr/local/apache-hive-1.1.0-bin

export PATH=${PATH}:${HIVE_HOME}/bin

修改Hive配置

hive-config.sh

#vim /usr/local/apache-hive-1.1.0-bin/bin/hive-config.sh

export JAVA_HOME=/usr/lib/jvm/java-7-Oracle

export HIVE_HOME=/usr/local/apache-hive-1.1.0-bin

export HADOOP_HOME=/usr/local/hadoop-2.6.0

hive-env.sh

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

hive-site.xml

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

#vim hive-site.xml

javax.jdo.option.ConnectionURL

jdbc:mysql://localhost:3306/hive

JDBC connect string for a JDBC metastore

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

Driver class name for a JDBC metastore

javax.jdo.option.ConnectionUserName

數據庫用戶名

Username to use against metastore database

javax.jdo.option.ConnectionPassword

數據庫密碼

password to use against metastore database

#如果不配置下面的部分會產生錯誤1.

hive.exec.local.scratchdir

自定義目錄

Local scratch space for Hive jobs

hive.downloaded.resources.dir

自定義目錄

Temporary local directory for added resources in the remote file system.

hive.querylog.location

自定義目錄

Location of Hive run time structured log file

hive.server2.logging.operation.log.location

自定義目錄/operation_logs

Top level directory where operation logs are stored if logging functionality is enabled

hive-log4j.properties

#cp hive-log4j.properties.template hive-log4j.properties

#vim hive-log4j.properties

hive.log.dir=自定義目錄/log/

在HDFS上建立/tmp和/user/hive/warehouse目錄,并賦予組用戶寫權限。

HADOOP_HOME/bin/hadoop fs -mkdir? ? ? /tmp

HADOOP_HOME/bin/hadoop fs -mkdir? ? ? /user/hive/warehouse

HADOOP_HOME/bin/hadoop fs -chmod g+w? /tmp

HADOOP_HOME/bin/hadoop fs -chmod g+w? /user/hive/warehouse

Mysql配置

#創建數據庫

mysql> create database hive;

#賦予訪問權限

mysql> grant all privileges on hive.* to root@localhost identified by '密碼' with grant option;

mysql> flush privileges;

#將JDBC復制到Hive庫目錄用于java程序與mysql的連接

cp mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar /usr/local/apache-hive-1.1.0-bin/lib/

完成以上操作后,啟動Hadoop,再在終端輸入hive啟動Hive,若Hive成功啟動,Hive本地模式安裝完成。

錯誤1.

Logging initialized using configuration in file:/usr/local/apache-hive-1.1.0-bin/conf/hive-log4j.properties

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:472)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:671)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

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

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

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

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

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

Caused by: 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:206)

at org.apache.hadoop.fs.Path.(Path.java:172)

at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:515)

at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:458)

... 8 more

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:1804)

at java.net.URI.(URI.java:752)

at org.apache.hadoop.fs.Path.initialize(Path.java:203)

... 11 more

錯誤2.

Logging initialized using configuration in file:/usr/local/apache-hive-1.1.0-bin/conf/hive-log4j.properties

[ERROR] Terminal initialization failed; falling back to unsupported

java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

at jline.TerminalFactory.create(TerminalFactory.java:101)

at jline.TerminalFactory.get(TerminalFactory.java:158)

at jline.console.ConsoleReader.(ConsoleReader.java:229)

at jline.console.ConsoleReader.(ConsoleReader.java:221)

at jline.console.ConsoleReader.(ConsoleReader.java:209)

at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

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

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

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

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

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

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

at jline.console.ConsoleReader.(ConsoleReader.java:230)

at jline.console.ConsoleReader.(ConsoleReader.java:221)

at jline.console.ConsoleReader.(ConsoleReader.java:209)

at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

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

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

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

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

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

錯誤原因:

Hive has upgraded to Jline2 but jline 0.94 exists in the Hadoop lib.1

1.Delete jline from the Hadoop lib directory (it's only pulled in transitively from ZooKeeper).

2.export HADOOP_USER_CLASSPATH_FIRST=true

Hive 的詳細介紹:請點這里

Hive 的下載地址:請點這里

總結

以上是生活随笔為你收集整理的linux hive创建数据库失败,Hive本地模式安装及遇到的问题和解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

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