hive的管理接口有三個:CLI,Client和 WUI。
其中最經常使用的是 CLI,Cli是本地的命令行接口。
Client是Hive的客戶端,鏈接Hive Server。
WUI是經過web方式訪問 Hive。java
Hive的元數據能夠存儲在多種數據庫裏如mysql、derby、oracle、pgsql。通常選擇是免費開源歷史長的mysql。固然如今有經過hdfs自己來存儲這些元數據
的方案。有機會能夠去試試,也但願有人能提供經驗。mysql
簡單說, HiveServer2是 HiveServer的升級版本,主要體如今:Kerberos身份驗證支持,多客戶端的併發支持。
HiveServer2可使用bin/beeline命令來進入管理.在我這個發行版本中 ./hive --service hiveserver 啓動的就是 HiveServer2。web
與pig單純的處理數據不一樣,hive有本身的數據存儲空間。對非本身目錄下的數據稱爲「外在」數據。hive沒有專門的數據存儲格式,也沒有索引,只有按文件目錄方式組織的表,
通常只須要肯定列分隔符和行分隔符,Hive就能夠解析數據爲一個「表」。
Hive中數據按目錄結構依次分爲:Table(External Table也就是非hive目錄下的Table),Partition,Bucket。
Table:對應一個相應的目錄存儲數據。例如,一個表 t1,它在HDFS中的路徑就爲:/warehouse/t1.而External Table不在/warehouse目錄下面。屬於一次性處理的數據.
Partition:一個 Partition(分區)對應於表下的一個目錄,例如:t1表中的c1,c2分區,則對應於 c1=1,c2=2的目錄爲:/warehouse/t1/c1=1/c2=2;對應於 ds = 20090801, ctry = CA 的 HDFS 子目錄爲;/wh/pvs/ds=20090801/ctry=CA。
Buckets:對應一個文件。如:t1表中的c3列,將t3列分散至多個bucket,首先對t3列的值計算hash,對應hash值爲0的文件爲:/warehouse/t1/c1=1/c2=2/part-0000
對於hive的數據,你是能夠直觀的看到的。使用fs命令能夠詳細的看看你的數據如何被存儲的。sql
hive與hbase的結合將會愈來愈多,目前須要引用的jar包及方法:
1 在腳本前面添加:
ADD JAR /usr/lib/hive/lib/zookeeper.jar;
ADD JAR /usr/lib/hive/lib/hbase.jar;
ADD JAR /usr/lib/hive/lib/hive-hbase-handler-0.10.0-cdh4.3.0.jar
ADD JAR /usr/lib/hive/lib/guava-11.0.2.jar;數據庫
選用cloudera的 hive0.10.0-cdh4.3.0
選用理由:依據cloudera的特點,cloudera知名,有實力,商用性強,生態系統組件完善,且各個組件版本對應正確,文檔維護好。apache
申請的機器:
192.168.2.21 hive
192.168.2.15 mysql服務器
假設你已經安裝好了
配置過程:
在hive中,用戶自定義配置文件hive-site.xml高於默認配置文件hive-default.xml.服務器
配置hive-site.xml架構
javax.jdo.option.ConnectionURL jdbc:mysql://192.168.2.15/hive?createDatabaseIfNotExist=true mysql服務器用於保存hive元數據
javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver mysql的java驅動 注意hive不自帶mysql-connector-java-5.1.25-bin.jar 這個jar包 須要你手動複製過去 或者添加classpath
javax.jdo.option.ConnectionUserName mysql服務器用戶名
javax.jdo.option.ConnectionPassword mysql服務器密碼
hive.metastore.uris thrift://192.168.2.21:9083 hiveserver地址
datanucleus.autoCreateSchema false 這個默認是true的 每次啓動的時候都會去檢查建立有時候還會有衝突 ,因此手動建立完數據庫架構後就把它設爲 false
datanucleus.fixedDatastore true
datanucleus.autoStartMechanism SchemaTable併發
hive.task.progress 爲每一個操做使用計數器?是爲何有這個設置。這個設置的話很浪費文件打開數。oracle
若是要啓動HiveServer2還須要下面的設置
hive.support.concurrency true 肯定併發支持。
hive.zookeeper.quorum 192.168.2.21 用hbase的那個
hive.zookeeper.client.port 若是zookeeper不在默認端口,用這個指定
javax.jdo.option.ConnectionURL jdbc:hive2://192.168.2.21:10000
javax.jdo.option.ConnectionDriverName org.apache.hive.jdbc.HiveDriver
hive.metastore.execute.setugi true 用戶使用自身及所在組的權限來使用hive的元數據
客戶端使用jdbc鏈接HiveServer2須要添加hive以及hadoop的jar包到其classpath。
配置hive-env.sh
HADOOP_HOME 你的hadoop裝在哪裏就填寫哪裏的地址
設置權限 /hive/warehouse 爲1777 ,1表示添加sticky bit,設置目點是容許全部用戶建立添加表可是不能刪除非本身建立的表,
初始化metadata的數據庫
SOURCE {hive目錄}/scripts/metastore/upgrade/mysql/hive-schema-0.10.0.mysql.sql;
運行命令
bin/hive
進入cli 命令行窗口
./hive --service metastore 若是metadata在遠程的話必須啓動遠程服務./hive --service hiveserver