上一篇文章分析了Hive1.2.2的安裝,本節博主將分享Hive的體驗&Hive服務端和客戶端的使用方法。mysql
1、Hive與hadoop直接的關係web
Hive利用HDFS存儲數據,利用MapReduce查詢數據。sql
2、Hive與傳統數據庫對比shell
Hive | RDBMS | |
查詢語言 | HQL | SQL |
數據存儲 | HDFS | Raw Device or Local FS |
執行 | MapReduce、spark等 | Excutor執行引擎 |
執行延遲 | 高 | 低 |
處理數據規模 | 大 | 小 |
索引 | 0.8版本後加入位圖索引 | 有完整的索引體系 |
總結:hive具備sql數據庫的外表(包括sql命令行功能、sql語法等),但應用場景徹底不一樣,hive只適合用來作批量數據統計分析。數據庫
3、Hive的數據存儲
a、Hive中全部的數據都存儲在 HDFS 中,沒有專門的數據存儲格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)
b、只須要在建立表的時候告訴 Hive 數據中的列分隔符和行分隔符,Hive 就能夠解析數據。
c、Hive 中包含如下數據模型:DB、Table,External Table,Partition,Bucket。
db:在hdfs中表現爲${hive.metastore.warehouse.dir}目錄下一個文件夾
table:在hdfs中表現所屬db目錄下一個文件夾
external table:外部表, 與table相似,不過其數據存放位置能夠在任意指定路徑
普通表: 刪除表後, hdfs上的文件都刪了
External外部表刪除後, hdfs上的文件沒有刪除, 只是把文件刪除了
partition:在hdfs中表現爲table目錄下的子目錄(如:日誌按日期分區後,便於管理,且查詢效率提高)
bucket:桶, 在hdfs中表現爲同一個表目錄下根據hash散列以後的多個文件, 會根據不一樣的文件把數據放到不一樣的文件中 (如:在進行笛卡爾積的時候,同一個id的數據必定在某個桶,效率會提高)apache
4、Hive使用方式centos
a、Hive交互shell服務器
bin/hiveapp
b、Hive thrift服務oop
thrift是一個跨平臺的協議,只要客戶端遵循thrift協議便可同hive交互;hive自帶的thrift服務端bin/hiveserver2,客戶端爲bin/beeline
啓動方式,(假如是在hadoop01上):
#啓動爲前臺: bin/hiveserver2 #啓動爲後臺: nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
啓動成功後,能夠在別的節點上用beeline去鏈接
方式(1)
#輸入如下命令,回車,進入beeline的命令界面 hive/bin/beeline #輸入命令鏈接hiveserver2,(hadoop01是hiveserver2所啓動的那臺主機名,端口默認是10000) beeline> !connect jdbc:hive2//hadoop01:10000
方式(2)
#啓動就鏈接: bin/beeline -u jdbc:hive2://hadoop01:10000 -n hadoop
接下來就能夠作正常sql查詢了
方式(3)
[hadoop@centos-aaron-h1 ~]$ hive -e 'sql語句'
5、使用效果圖
[hadoop@centos-aaron-h1 bin]$ ./hiveserver2
Last login: Wed Jan 23 07:07:45 2019 from 192.168.29.3 [hadoop@centos-aaron-h1 ~]$ ~/apps/apache-hive-1.2.2-bin/bin/beeline -u jdbc:hive2://centos-aaron-h1:10000 -n hadoop Connecting to jdbc:hive2://centos-aaron-h1:10000 Connected to: Apache Hive (version 1.2.2) Driver: Hive JDBC (version 1.2.2) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 1.2.2 by Apache Hive 0: jdbc:hive2://centos-aaron-h1:10000> show databases; +----------------+--+ | database_name | +----------------+--+ | default | | wcc_log | +----------------+--+ 2 rows selected (1.86 seconds) 0: jdbc:hive2://centos-aaron-h1:10000> use wcc_log; No rows affected (0.155 seconds) 0: jdbc:hive2://centos-aaron-h1:10000> show tables; +--------------+--+ | tab_name | +--------------+--+ | t_web_log01 | +--------------+--+ 1 row selected (0.07 seconds) 0: jdbc:hive2://centos-aaron-h1:10000> select * from t_web_log01; +-----------------+-------------------+--+ | t_web_log01.id | t_web_log01.name | +-----------------+-------------------+--+ | 1 | 張三 | | 2 | 李四 | | 3 | 王二 | | 4 | 麻子 | | 5 | 隔壁老王 | +-----------------+-------------------+--+ 5 rows selected (1.064 seconds) 0: jdbc:hive2://centos-aaron-h1:10000> select id , name from t_web_log01; +-----+-------+--+ | id | name | +-----+-------+--+ | 1 | 張三 | | 2 | 李四 | | 3 | 王二 | | 4 | 麻子 | | 5 | 隔壁老王 | +-----+-------+--+ 5 rows selected (0.077 seconds) 0: jdbc:hive2://centos-aaron-h1:10000> select id , name from t_web_log01 order by id desc; INFO : Number of reduce tasks determined at compile time: 1 INFO : In order to change the average load for a reducer (in bytes): INFO : set hive.exec.reducers.bytes.per.reducer=<number> INFO : In order to limit the maximum number of reducers: INFO : set hive.exec.reducers.max=<number> INFO : In order to set a constant number of reducers: INFO : set mapreduce.job.reduces=<number> INFO : number of splits:1 INFO : Submitting tokens for job: job_1548198552826_0001 INFO : The url to track the job: http://centos-aaron-h1:8088/proxy/application_1548198552826_0001/ INFO : Starting Job = job_1548198552826_0001, Tracking URL = http://centos-aaron-h1:8088/proxy/application_1548198552826_0001/ INFO : Kill Command = /home/hadoop/apps/hadoop-2.9.1/bin/hadoop job -kill job_1548198552826_0001 INFO : Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1 INFO : 2019-01-23 07:17:45,112 Stage-1 map = 0%, reduce = 0% INFO : 2019-01-23 07:17:52,354 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.22 sec INFO : 2019-01-23 07:18:04,679 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 2.13 sec INFO : MapReduce Total cumulative CPU time: 2 seconds 130 msec INFO : Ended Job = job_1548198552826_0001 +-----+-------+--+ | id | name | +-----+-------+--+ | 5 | 隔壁老王 | | 4 | 麻子 | | 3 | 王二 | | 2 | 李四 | | 1 | 張三 | +-----+-------+--+ 5 rows selected (38.171 seconds) 0: jdbc:hive2://centos-aaron-h1:10000>
注意:hive是能夠設置遠端登陸用戶名和密碼的,只是博主系統沒設置,默認爲hive啓動用戶hadoop,端口爲10000. 看了博主的操做有沒有種在使用mysql命令行的感受...
最後寄語,以上是博主本次文章的所有內容,若是你們以爲博主的文章還不錯,請點贊;若是您對博主其它服務器大數據技術或者博主本人感興趣,請關注博主博客,而且歡迎隨時跟博主溝通交流。