hive是一款資料倉儲軟體,幫助使用者使用sql來管理/讀寫在分布式儲存上的大型資料集。使用者可以通過cli/jbdc driver等方式來連線hive。
直接編寫mapreduce程式來操作hadoop上的資料集需要編寫複雜的**,而使用hive,只需要簡單的sql語句,如select * from test;則可以獲取到在hadoop上的指定資料。
hive並不儲存資料,hive只是操作在分布式儲存上的資料,如hdfs/hbase。
以hdfs為例,hdfs上只是簡單的檔案,並不帶表資訊/列資訊,而hive可以把hdfs上的資料讀取出來以表資料的方式呈現。那hdfs上的檔案有些什麼表,表裡有什麼列,這就是元資料,存放在普通資料庫中,如derby/mysql。
hive從metastore中獲取元資料,將sql語句翻譯成mapreduce程式,交給hadoop操縱在hdfs上的資料。
那hive裡面又是怎樣的呢。
1. hive提供多個服務,可以通過以下命令啟動
hive --service servicename
parameters>
service list:
beeline
cleardanglingscratchdir
cli
hbaseimport
hbaseschematool
help
hiveburninclient
hiveserver2
hplsql
jar
lineage
llapdump
llap
llapstatus
metastore
metatool
orcfiledump
rcfilecat
schematool
version
常用的就是cli/hiveserver2/metastore。
1.1 cli
提供命令列方式訪問hive
1.2 hiveserver2
hive thrift server,使程式可以通過jdbc driver等接入hive
1.3 metastore
hive元資料服務。
2. hive從2.2.0開始包含了hcatalog
hcatalog是基於apache hadoop之上的資料表和儲存管理服務,支援跨資料處理工具,如pig,mapreduce,streaming,hive。
使用hcatalog,則hive的元資料也可以為其他基於hadoop的工具所使用。無論使用者用哪個資料處理工具,通過hcatalog,都可以操作同乙個資料。
以上大部分為個人理解,如有不對,望指出。
Hive架構原理
1 使用者介面 client cli command line inte ce jdbc odbc jdbc訪問hive webui 瀏覽器訪問hive 2 元資料 metastore 元資料報括 表名 表所屬的資料庫 預設是default 表的擁有者 列 分割槽字段 表的型別 是否是外部表 表的資...
HIve 體系架構
sql語句就是不能在普通的字串而已,如何讓字串讓hive引擎識別呢 會把sql編譯成乙個語法術 sql parser 編譯解析 queryoptimizer做很多的優化,找到乙個最優的執行計畫,physical plan 生成物理計畫,在這個過程中有序列化和反序列化,udf 就是使用者自己定義的函式...
hive架構原理
1 使用者介面 client cli command line inte ce jdbc odbc jdbc訪問hive webui 瀏覽器訪問hive 2 元資料 metastore 元資料報括 表名 表所屬的資料庫 預設是default 表的擁有者 列 分割槽字段 表的型別 是否是外部表 表的資...