HIVE概念以及搭建
先來講講hadoop是啥:
1.Hadoop是什麼
海量資料分散式的儲存和計算框架
資料儲存:HDFS: Hadoop Distributed File System
資料計算:YARN/MapReduce
2.Hadoop的訪問方式
1.shell cli:
hadoop fs或者hdfs dfs
資料夾、檔案的建立以及刪除
移動、改名
下載、複製
檢視
2.Java API:
3.Web UI: 50070 HUE
3.hive產生背景
MapReduce程式設計不方便:開發、測試、需求變更
傳統關係型資料庫人員的需要像使用sql一樣的方式來處理分析大資料==> Hive
檔案是存放在HDFS之上的,那麼如果你想使用SQL去處理它,需要一個什麼前提?
hdfs存的文字,要讓他變成表格
結構化、檔案對映成表格 ==> Schema 元資料資訊(metastore)
Hive是什麼: hive.apache.org
首先了解資料倉庫
data warehouse 資料倉庫
分散式儲存:HDFS、S3亞馬遜、OSS阿里
hdfs的路徑,hdfs://xxxxxxx
s3類似,s3://…
那麼hive是啥 Facebook開源:解決海量結構化日誌的資料 pv uv 構建在Hadoop之上的資料倉庫的操作工具 Hive定義了SQL語言:HQL (類SQL) 通常用於離線處理 SQL =====Hive=====MapReduce(map reduce要建立銷燬程序,效能低)/Spark/Tez===>YARN Hive on MapReduce Hive on Spark Hive on Tez
4.為什麼要使用hive?
- 類似SQL的語法
- Hadoop之上,分散式大規模處理能力
- MetaStore: Pig/Impala/Presto/SparkSQL共享元資料資訊,hive建立一張表,sparksql等都能用
5.Hive與RDBMS關係型資料庫的關係
SQL: Hive QL和SQL的關係,類似而已,沒關係
實時性:沒關係型資料庫快,畢竟底層還是mapreduce
事務,hive基本不用
分散式,mysql也支援分散式
資料量,hive操作更大資料
6. hive的部署架構
hive是一個客戶端工具,讀取類似sql的操作語句,來對hadoop叢集進行操作,它需要連線兩個mysql(一主一備)來儲存元資料(表的欄位資訊之類的)。hive內建了一個derby資料庫,但是這個資料庫有致命問題就是,只能有一個使用者登陸,所以不用。
7.HIVE的部署
下載:http://archive-primary.cloudera.com/cdh5/cdh/5/
在使用CDH版本的時候一定要注意:尾巴對準了
wget http://archive-primary.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz
指定解壓目錄
解壓:tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/
[[email protected] hive-1.1.0-cdh5.7.0]$ ll
total 440
drwxr-xr-x. 3 hadoop hadoop 4096 Mar 24 2016 bin 指令碼檔案
drwxr-xr-x. 2 hadoop hadoop 4096 Mar 24 2016 conf 配置
drwxr-xr-x. 3 hadoop hadoop 4096 Mar 24 2016 data
drwxr-xr-x. 6 hadoop hadoop 4096 Mar 24 2016 docs
drwxr-xr-x. 4 hadoop hadoop 4096 Mar 24 2016 examples
drwxr-xr-x. 7 hadoop hadoop 4096 Mar 24 2016 hcatalog
drwxr-xr-x. 4 hadoop hadoop 12288 Mar 24 2016 lib 依賴包
-rw-r--r--. 1 hadoop hadoop 23169 Mar 24 2016 LICENSE
-rw-r--r--. 1 hadoop hadoop 397 Mar 24 2016 NOTICE
-rw-r--r--. 1 hadoop hadoop 4048 Mar 24 2016 README.txt
-rw-r--r--. 1 hadoop hadoop 376416 Mar 24 2016 RELEASE_NOTES.txt
drwxr-xr-x. 3 hadoop hadoop 4096 Mar 24 2016 scripts
1.配置環境變數
[[email protected] ~]$ vi .bash_profile
加入
export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
export PATH=$HIVE_HOME/bin:$PATH
生效
source ~/.bash_profile
2.配置HIVE_HOME
vi hive-env.sh
env檔案我的理解就是該軟體要執行在什麼環境上。hadoop的env是java。hive的env是hadoop。
HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
3.配置mysql在hive上
vi hive-site.sh
<property>
<name>javax.jdo.option.ConnectionURL</name> 指向下面那個埠地址,ruoze_d5資料庫,如果資料庫不存在則建立,
<value>jdbc:mysql://localhost:3306/ruoze_d5?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name> 連線mysql要用driver
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name> 使用者名稱
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name> 密碼
<value>123456</value>
</property>
這裡的驅動只要
拷貝mysql驅動到$HIVE_HOME/lib下即可,
本文用的是mysql-connector-java-5.1.27.jar
8.hive的日誌log檔案
日誌在這
[[email protected] conf]$ ls
beeline-log4j.properties.template hive-exec-log4j.properties.template
hive-env.sh hive-log4j.properties.template
hive-env.sh.template hive-site.xml
[[email protected] conf]$ cat hive-exec-log4j.properties.template
hive.log.threshold=ALL
hive.root.logger=INFO,FA
hive.log.dir=${java.io.tmpdir}/${user.name} tmp目錄下當前使用者名稱
hive.query.id=hadoop
hive.log.file=${hive.query.id}.log log名
[[email protected] lib]$ cd /tmp/hadoop
[[email protected] hadoop]$ ls
eb3c8d92-c535-4615-a4e9-28c65b3d04fd
eb3c8d92-c535-4615-a4e9-28c65b3d04fd3153814063007855034.pipeout
eb3c8d92-c535-4615-a4e9-28c65b3d04fd3743168943296294619.pipeout
hive.log 就是這個
[[email protected] hadoop]$