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?

  1. 類似SQL的語法
  2. Hadoop之上,分佈式大規模處理能力
  3. 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/

[hadoop@hadoop000 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.配置環境變量

[hadoop@hadoop000 ~]$ 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&amp;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文件

日誌在這
[hadoop@hadoop000 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
[hadoop@hadoop000 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名
[hadoop@hadoop000 lib]$ cd /tmp/hadoop
[hadoop@hadoop000 hadoop]$ ls
eb3c8d92-c535-4615-a4e9-28c65b3d04fd
eb3c8d92-c535-4615-a4e9-28c65b3d04fd3153814063007855034.pipeout
eb3c8d92-c535-4615-a4e9-28c65b3d04fd3743168943296294619.pipeout
hive.log     就是這個
[hadoop@hadoop000 hadoop]$ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章