sql安装目录下log文件夹_Linux安装Hive数据仓库工具
1、Hive入門(mén)教程
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的sql查詢功能,可以將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過(guò)類SQL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開(kāi)發(fā)專門(mén)的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析。Hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)工具在Hadoop中用來(lái)處理結(jié)構(gòu)化數(shù)據(jù)。它架構(gòu)在Hadoop之上,總歸為大數(shù)據(jù),并使得查詢和分析方便。
在Hive中,Hive是SQL解析引擎,它將SQL語(yǔ)句轉(zhuǎn)譯成M/R Job然后在Hadoop執(zhí)行。Hive的表其實(shí)就是HDFS的目錄/文件,按表名把文件夾分開(kāi)。如果是分區(qū)表,則分區(qū)值是子文件夾,可以直接在M/RJob里使用這些數(shù)據(jù)。
最初,Hive是由Facebook開(kāi)發(fā),后來(lái)由Apache軟件基金會(huì)開(kāi)發(fā),并作為進(jìn)一步將它作為名義下ApacheHive為一個(gè)開(kāi)源項(xiàng)目。它用在好多不同的公司。例如,亞馬遜使用它在Amazon Elastic、MapReduce。
1)Hive原理圖
2)Hive系統(tǒng)架構(gòu)
Hive系統(tǒng)架構(gòu)圖:
用戶接口:
CLI,即Shell命令行。
JDBC/ODBC是Hive的Java,與使用傳統(tǒng)數(shù)據(jù)庫(kù)JDBC的方式類似。
WebGUI是通過(guò)瀏覽器訪問(wèn)Hive。
Thrift是一個(gè)軟件框架,用來(lái)進(jìn)行可擴(kuò)展且跨語(yǔ)言的服務(wù)的開(kāi)發(fā)。它結(jié)合了功能強(qiáng)大的軟件堆棧和代碼生成引擎,以構(gòu)建在 C++,Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript,Node.js, Smalltalk, and OCaml這些編程語(yǔ)言間無(wú)縫結(jié)合的、高效的服務(wù)。
解釋器、編譯器、優(yōu)化器完成HQL查詢語(yǔ)句從詞法分析、語(yǔ)法分析、編譯、優(yōu)化以及查詢計(jì)劃(plan)的生成。生成的查詢計(jì)劃存儲(chǔ)在HDFS中,并在隨后有MapReduce調(diào)用執(zhí)行。
Hive的數(shù)據(jù)存儲(chǔ)在HDFS中,大部分的查詢由MapReduce完成(包含*的查詢,比如select *from table不會(huì)生成MapRedcue任務(wù))。
Hive將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中(metastore),目前只支持mysql、derby。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。
Metastore組件
Hive的Metastore組件是Hive元數(shù)據(jù)集中存放地。Metastore組件包括兩個(gè)部分:Metastore服務(wù)和后臺(tái)數(shù)據(jù)的存儲(chǔ)。后臺(tái)數(shù)據(jù)存儲(chǔ)的介質(zhì)就是關(guān)系數(shù)據(jù)庫(kù),例如Hive默認(rèn)的嵌入式磁盤(pán)數(shù)據(jù)庫(kù)derby,還有mysql數(shù)據(jù)庫(kù)。Metastore服務(wù)是建立在后臺(tái)數(shù)據(jù)存儲(chǔ)介質(zhì)之上,并且可以和Hive服務(wù)進(jìn)行交互的服務(wù)組件,默認(rèn)情況下,Metastore服務(wù)和Hive服務(wù)是安裝在一起的,運(yùn)行在同一個(gè)進(jìn)程當(dāng)中。我也可以把Metastore服務(wù)從Hive服務(wù)里剝離出來(lái),Metastore獨(dú)立安裝在一個(gè)集群里,Hive遠(yuǎn)程調(diào)用Metastore服務(wù),這樣我們可以把元數(shù)據(jù)這一層放到防火墻之后,客戶端訪問(wèn)Hive服務(wù),就可以連接到元數(shù)據(jù)這一層,從而提供了更好的管理性和安全保障。使用遠(yuǎn)程的Metastore服務(wù),可以讓Metastore服務(wù)和hive服務(wù)運(yùn)行在不同的進(jìn)程里,這樣也保證了Hive的穩(wěn)定性,提升了Hive服務(wù)的效率。
Hive的執(zhí)行流程如下圖所示:
3)前置條件
Hive是建立Hadoop環(huán)境安裝之上的,所以需要Hadoop的集群環(huán)境搭建,Hive即需要依賴于HDFS又需要依賴YARN。安裝好Hadoop后需要進(jìn)行啟動(dòng)HDFS和YARN。
環(huán)境安裝參考資料:Linux搭建Hadoop-2.7.2分布式集群
環(huán)境安裝參考資料:
1、Hive下載地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz
2、Hadoop和Hbase版本關(guān)系表:
Hive版本 | Hadoop版本 |
| Hive-2.3.0 | 2.x.y |
| Hive-2.2.0 | 2.x.y |
| Hive-2.1.1 | 2.x.y |
| Hive-2.1.0 | 2.x.y |
| Hive-2.0.0 | 2.x.y |
| Hive-1.2.2 | 1.x.y、2.x.y |
| Hive-1.2.1 | 1.x.y、2.x.y |
| Hive-1.1.1 | 1.x.y、2.x.y |
| Hive-1.0.1 | 1.x.y、2.x.y |
| Hive-1.0.0 | 1.x.y、2.x.y |
| Hive-0.13.1 | 0.20.x.y、0.23.x.y、1.x.y、2.x.y |
| Hive-0.13.0 | 0.20.x.y、0.23.x.y、1.x.y、2.x.y |
| Hive-0.12.0 | 0.20.x.y、0.23.x.y、1.x.y、2.x.y |
| Hive-0.11.0 | 0.20.x.y、0.23.x.y、1.x.y、2.x.y |
| Hive-0.10.0 | 0.20.x.y、0.23.x.y、1.x.y、2.x.y |
4)安裝Hive
1、下載Hive安裝包
[root@node1 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz
2、解壓Hive安裝包
[root@node1 ~]# tar xf apache-hive-2.3.7-bin.tar.gz
[root@node1 ~]# mv apache-hive-2.3.7-bin /usr/local/hive
[root@node1 ~]# ls -l /usr/local/hive/
total 56
drwxr-xr-x 3 root root 133 Dec 3 10:56 bin
drwxr-xr-x 2 root root 4096 Dec 3 10:56 binary-package-licenses
drwxr-xr-x 2 root root 4096 Dec 3 10:56 conf
drwxr-xr-x 4 root root 34 Dec 3 10:56 examples
drwxr-xr-x 7 root root 68 Dec 3 10:56 hcatalog
drwxr-xr-x 2 root root 44 Dec 3 10:56 jdbc
drwxr-xr-x 4 root root 12288 Dec 3 10:56 lib
-rw-r--r-- 1 root root 20798 Mar 10 2020 LICENSE
-rw-r--r-- 1 root root 230 Apr 8 2020 NOTICE
-rw-r--r-- 1 root root 361 Apr 8 2020 RELEASE_NOTES.txt
drwxr-xr-x 4 root root 35 Dec 3 10:56 scripts
注解:
bin:包含hive的命令shell腳本
binary-package-licenses:包含了LICENSE說(shuō)明文件
conf:包含hive配置文件
examples:包含了示例
hcatalog:Metastore操作的元數(shù)據(jù)目錄
jdbc:提供了hive-jdbc-2.3.0-standalone.jar包
scripts:提供了sql腳本
3、配置環(huán)境變量
[root@node1 ~]# vim /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
4、執(zhí)行命令source /etc/profile使其生效
[root@node1 ~]# source /etc/profile
5、配置Hive
[root@node1 ~]# cd /usr/local/hive/conf
[root@node1 conf]# cp hive-default.xml.template hive-site.xml
# 新建HDFS目錄
[root@node1 conf]# hadoop fs -mkdir -p /data/hive/warehouse
[root@node1 conf]# hadoop fs -mkdir -p /data/hive/tmp
[root@node1 conf]# hadoop fs -mkdir -p /data/hive/log
[root@node1 conf]# hadoop fs -chmod -R 777 /data/hive/warehouse
[root@node1 conf]# hadoop fs -chmod -R 777 /data/hive/tmp
[root@node1 conf]# hadoop fs -chmod -R 777 /data/hive/log
#?用以下命令檢查目錄是否創(chuàng)建成功
[root@node1 conf]# hadoop fs -ls /user/hive
Found 3 items
drwxrwxrwx - root supergroup 0 2020-12-03 13:36 /data/hive/log
drwxrwxrwx - root supergroup 0 2020-12-03 13:34 /data/hive/tmp
drwxrwxrwx - root supergroup 0 2020-12-03 13:36 /data/hive/warehouse
6、修改hive-site.xml
# 搜索hive.exec.scratchdir,將該name對(duì)應(yīng)的value修改為/data/hive/tmp
hive.exec.scratchdir
/data/hive/tmp
# 搜索hive.querylog.location,將該name對(duì)應(yīng)的value修改為
/data/hive/log/hadoop
hive.querylog.locationname>
/data/hive/log/hadoopvalue>
Location of Hive run time structured logfiledescription>
property>
# 搜索javax.jdo.option.connectionURL,將該name對(duì)應(yīng)的value修改為Mysql的地址
javax.jdo.option.ConnectionURL
jdbc:mysql://172.168.1.14:3306/hive?createDatabaseIfNotExist=true
JDBC connectstring for a JDBC metastore.
To use SSL toencrypt/authenticate the connection, provide
database-specific SSL flag in theconnection URL.
For example,jdbc:postgresql://myhost/db?ssl=true for postgres database.
# 搜索javax.jdo.option.ConnectionDriverName,將該name對(duì)應(yīng)的value修改為Mysql驅(qū)動(dòng)類路徑
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driverclass name for a JDBC metastore
# 搜索javax.jdo.option.ConnectionUserName,將對(duì)應(yīng)的value修改為Mysql數(shù)據(jù)庫(kù)登錄名
javax.jdo.option.ConnectionUserName
hive
Username touse against metastore database
# 搜索javax.jdo.option.ConnectionPassword,將對(duì)應(yīng)的value修改為Mysql數(shù)據(jù)庫(kù)的登錄密碼
javax.jdo.option.ConnectionPassword
123456
password to useagainst metastore database
# 創(chuàng)建tmp目錄
[root@node1 conf]# mkdir ../tmp
# 把${system:java.io.tmpdir}改成/usr/local/hive/tmp
[root@node1 conf]# sed -i 's#${system:java.io.tmpdir}#/usr/local/hive/tmp#g' hive-site.xml
# 把${system:user.name}改成${user.name}
[root@node1 conf]# sed -i 's#${system:user.name}#${user.name}#g' hive-site.xml
7、修改hive-env.sh
[root@node1 conf]# mv hive-env.sh.template hive-env.sh
[root@node1 conf]# vim hive-env.sh
# 加入以下內(nèi)容
HADOOP_HOME=/usr/local/hadoop-2.7.2
export HIVE_CONF_DIR=/usr/local/hive/conf
8、下載Mysql驅(qū)動(dòng)包
[root@node1 conf]# cd ../lib/
[root@node1 lib]# https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.46.zip
[root@node1 lib]# unzip mysql-connector-java-5.1.46.zip
[root@node1 lib]# mv mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar .
[root@node1 lib]# rm -rf mysql-connector-java-5.1.46*
9、創(chuàng)建hive數(shù)據(jù)庫(kù)及授權(quán)
[root@node1 ~]# mysql -uroot -p
mysql> create database hive;
mysql> grant all on hive_test@'%' identifide by '123456';
mysql> flush privileges;
10、初始化Mysql
[root@node1 lib]# cd ../bin
[root@node1 bin]# ./schematool -initSchema -dbType mysql
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLo
ggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:???? jdbc:mysql://172.168.1.14:3306/hive?createDatabaseIfNotExist=true
Metastore Connection Driver :???? com.mysql.jdbc.Driver
Metastore connection User:???? hive
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed
schemaTool completed
# 看到schemaTool completed表示初始化成功。
5)啟動(dòng)Hive
[root@node1 lib]# hive
which: no hbase in (/usr/local/jdk1.8.0_181/bin:/usr/local/jdk1.8.0_181/jre/bin:/data/mysql/bin:/usr/local/jdk1.8.0_181/bin:/usr/local/jdk1.8.0_181/jre/bin:/data/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/usr/local/hadoop-2.7.2/bin:/root/bin:/bin:/usr/local/hadoop-2.7.2/bin:/usr/local/hive/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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.apache.logging.slf4j.Log4jLoggerFactory]
Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-2.3.7.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> show databases;
OK
default
Time taken: 0.068 seconds, Fetched: 1 row(s)
至此,Hive數(shù)據(jù)倉(cāng)庫(kù)搭建完畢。
輸入編號(hào):7714,直達(dá)文章
輸入m|M,直達(dá)目錄列表
總結(jié)
以上是生活随笔為你收集整理的sql安装目录下log文件夹_Linux安装Hive数据仓库工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: layui 刷新页面_layuimini
- 下一篇: python3urllib中的quote