999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

實戰Hive和Hbase集成管理

2018-03-04 16:37:00
網絡安全和信息化 2018年10期
關鍵詞:數據庫

安裝Hive和MySQL

Hive默認使用Derby數據庫,因其允許同時有一個用戶進行操作。為了便于使用,需要將其替換為MySQL等關系型數據庫。這里使用 的 是 MySQL,在 Linux下執 行“sudo rpm -qa|grep mysql”命令,來檢測是否安裝了MySQL。如果沒有安裝,可以執行“sudo yum install mysql-server”命令安裝。注意,這里只安裝其服務端程序。為讓安裝順利進行,可以執行“vim /etc/resolv.conf”命令,輸入“nameserver x.x.x.x”,設置合適的DNS服務器地址。之后執行“service mysqld start”命令來啟動MySQL。

執 行“mysqladmin -u root password 'adminpass'”命令,設置MySQL中的root賬戶密碼。為在Linux命令行中順利連接MySQl客戶端,必須將MySQL數據庫“user”表中“root”之外的用戶刪除。方法是執行“mysql-uroot -padminpass”命令,在MySQL控制臺執行“use mysql;”,選擇目標數據庫,執行“update user set= '%'where user= 'root' and host= 'localhost';”、“flush privileges;”命令,對權限進行修改,讓外界的主機可以進行連接。在外部主機上運行Navicat for MySQL工具,點擊工具欄上的“連接”按鈕,在打開窗口中的“常規”面板中輸入其名稱、MySQL主機名、賬戶名和密碼,之后執行連接操作。

在左側打開該連接項目,選擇“MYSQL”、“表”項,在右側雙擊“user”表,在編輯窗口中刪除除了“root”之外的所有賬戶。在上述“mysql>”提示符下點擊“Ctrl+C”鍵,退出MySQL控制臺,執行“chkconfig mysqld on” 命令,可以讓MySQL組件跟隨系統自動運行。執行“wget http://archive.cloundera.com/cdh/5/hive-x.x.x.tar.gz”之類的命令,從指定的網址下載合適的Hive版本安裝包,之后執行“tar -zxf ./hive-x.x.x.tar.gz -C ../hivesoft”命令,將Hive安裝包解壓到指定路徑。在解壓路徑中進入“conf”目錄,執行“cp hive-default.xml.template hive-site.xml”命令,復制得到Hive的配置文件。執行“vim hivesite.xml”命令,將其中的所有內容全部清除,只保存“<configuration>” 和“</configuration>”結構。

依次輸入“<property>”、“<name>javax.jdo.option.ConnectionURL</name>”、“<value>jdbc:mysql://hbasesrv.xxx.com:3306/hive?reateDatabaseIfNot Exist=true</value>”、“</property>”、“<property>”、“<name>javax.jdo.option.ConnectionDriverName</name>”、“<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>adminpass</value>”、“</property>”。

以“jdbc:mysql”開 頭的內容為指定目標MySQL數

Hive配置

據庫連接位置,“com.mysql.jdbc.Driver”指明驅動信息,并執行賬戶名和密碼,這里為“root”和“adminpass”。因為Hive中沒有MySQL的驅動,所以需手工導入,在Linux命令行下進入Hive解壓路徑中的“lib”目錄,執行“cp /home/jars/mysqlconnector-java-x.x.xbin .”命令將驅動文件復制進來。因為Hive文件是存儲在HDFS中的,所以需要進入Hadoop安裝路徑中的“sbin”目錄,執行“startall.sh”文件啟動 Hadoop。執 行“jps”命 令,發 現“Namenode”、“DataNode”、“ResourceManager”、“SecondaryNameNode”、“Jps”等進程都存在,說明啟動成功。進入Hive解壓路徑中的“bin”目錄,執行“Hive”命令來啟動Hive。

如果啟動失敗,極有可能是連接問題,一般是由于主機名沒有配置正確。執行“hostname”命令,將主機名和上述連接參數中的主機名比對,如有問題,需要將其設置為正確值。如果依然報錯,執 行“service mysqld restart”命令重啟 MySQL。啟動Hive成功后,在“hive>”提示符下執行“create table yongh(id string,name string,age string) row format delimited fields terminated by ' '” 命令創建名為“user”的表。執 行“load data local inpath '/home/data/yongh'overwrite into table yongh”命令,將指定路徑中的文件內容插入到上述“yongh”表中。執行“select* from yongh;”命令,查看“user”表中內容。如果以上操作順利完成,說明Hive運行沒有問題。

Hive和Hbase集成的實現原理

對于用戶來說,如果想訪問Hive,可以通過命令行來訪問,這是最常用的方式。也可以編寫相應代碼,通過JDBC或ODBC的方式進行訪問。當然,還可使用Hive提供的Web圖形界面進行訪問,但其界面簡單,功能也不強大。為此可以使用HUE系統來增強其功能。Metastore元數據存儲主要用來維護HDFS中的文件和Hive表的關系,包括Hive表的名稱、所屬的數據庫、表的擁有者、列、分區的字段等。

其通常存儲在MySQL等關系型數據庫中,但MySQL依然存在單點故障問題,為此可以配置兩臺MySQL服務器來組成HA高可用結構,防止因為MySQL出現故障引發Hive運行異常。

Driver(Compiler、Optimizer、Executor)驅 動器是Hive的核心,例如想執行一條SQL語句,會通過解析處理,包括解釋器、編譯器、優化器、執行器等。解釋器會將SQL語句解釋為抽象語法樹,一般使用第三方工具完成。例如使用Antlr對抽象語法樹進行解析,判斷表和字段是否存在以及語法是否正確等。如果語法格式存在問題,就會拋出異常信息。接下來編譯器會將抽象語法樹進行編譯,并生成邏輯執行計劃,可以將邏輯執行計劃理解為MapReduce任務。

之后通過優化器對邏輯執行計劃進行優化處理,最后才會進入執行器中執行相應的SQL語句。Hive的數據存儲在HDFS中,查詢的語法主要是通過MapReduce語法進行計算,Hive最主要的作用就是將SQL轉化為MapReduce任務,并通過MapReduce任務返回用戶所需的數據。

對于Hbase的架構來說,同樣是通過客戶端來操作Hbase數據庫的,其數據存儲在HDFS中,通過Zookeeper來管理Hbase集群。當實現了Hive和Hbase的整合后,會先通過命令行進行訪問,之后通過Hive驅動器組件調用Hbase的Client組件,通過Hive提供的Jar包完成兩者間的轉換。

Hive中存在一種存儲Handler,來維護兩者之間的關系。在很多場景中可以發揮兩者整合的功能,例如通過Hive將數據加載到Hbae中,其數據源可以是文件或表,Hive先通過Select語句來查詢數據,之后通過Insert語句將數據插入到Hive表中,因為Hbase和Hive的表已經集成在一起,所以在Hive表增加數據的同時,Hbase表中的數據會同步增加。因為Hbase查詢不支持Join和Group等操作語句,利用Hive和Hbase的集成,可以讓Hbase支持這些操作。

首先將Hbase數據庫或其他的數據源加載到Hive中,通過Hive的語法進行查詢,因為Hive支持Group和Join等操作,可以將查詢的數據返回到結果集中,通過這種方式可以讓Hbase完美支持SQL語法。

當Hbase中實時的操作數據,或周期性的加載其他數據(例如源文件或表中的數據等),因為Hbase加載數據的速度極快,這樣可以通過Hive直接查詢數據,省去了Hive加載數據的環節。

實現Hive和Hbase的集成

在實現集成之前,需要注意兩者的版本問題。對于Hive 0.9來說,整合的Hbase版本必須是0.92以上的。對于Hive 1.x版本來說,可以和Hbase 0.98x的版本保持兼容。對于Hive 2.x版本來說,只支持Hbase 1.x之后的版本。

如果想讓Hive 1.x和Hbase 1.x集成,必須重新編譯Hive的源代碼,讓兩者保持兼容。Hive中的字段和Hbase中列都是通過Storage handler來維護的,所以在創建Hive表要將其存儲格式指定為該存儲Handler。

這個存儲處理的Handler程序程序被編譯 成 名 為“hive-hbasehandler-x.x.x.jar”的獨立模塊,在Java中其實就是一個Jar包。

注意,Hive的客戶端必須對其進行識別,否則就會出錯。利用Hive和Hbase的集成,可以有效利用HBase數據庫的存儲特性,例如行更新和列索引等。實現集成必須在Hive表和Hbase表之間建立映射關系,對于Hive表中每個域都必須存儲在HBase中,但是Hive表中不需要包含Hbase表中的列,因為Hbase是NoSQL類型的數據庫,其列都是動態指定的。

首先進入Hive的安裝目錄,執行“ls lib”命令,顯示Hive的所有庫文件。

然后執行“cp /home/dbsoft/hbase-x.x/lib/*lib/”命令,其中的’ /home/dbsoft/hbase-x.x將 為Hbase的安裝路徑,將Hbase安裝路徑下的的“lib”的所有內容復制到Hive的“lib”目錄中,如果提示覆蓋的話確認即可。這樣做的好處在于不用繁瑣的設置環境變量。

在Hive中映射Hbase表

執行“bin/hive”命令啟動Hive,這里使用簡單的例子來說明如何在Hive中映射Hbase的表。

在“Hive>”提示符下輸入“CREATE TABLE hbtk1(key int,value string)”、“STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'”、“WITH SERDEPROPERTIES("hbase.columns.mapping"= ":key,cf1:val")”、“TBLPROPERTIES ("hbase.table.name" = "htb");”行來創建名為“hbtk1”的表,并指定Hbase的Handler模塊路徑,之后指定其映射關系,最后指定映射的Hbase的表名稱。

進入Hbase的安裝路徑中的“bin”目錄,執行“hbase shell”命令進入Hbase控制臺,執行“list”命令,可以看到名為“htb”表已經加載,執 行“describe 'htb'”命令,查看其詳細信息。因為該表已經和上述Hive中的表建立了映射關系,所以不能在Hive中直接導入數據,但是可以查詢其他的表來加載數據。

在Hive控制臺中執行“CREATE TABLE table1(fno int,chanpin string)row format delimited fields terminated by ' ';”命令,創建名為“table1”的表,其各字段需要和上述表對應,并使用制表符分隔。

然后執行“load data local inpath '/home/data/product.txt' overwrite into table table1;”命令,從指定的名為“product.txt”文件中加載數據。

當然,該文件必須事先創建好,其中輸入對應的字段內容,并使用制表符分隔。 執 行“select * from table1;”命令,顯示已經加載的數據。執行“insert overwrite table hbtk1 select * from table1;”命令,將該表中的數據加載到“hbtk1”表中。

然后,在上述的Hbase控制臺中執行“scan 'htb'”命令,顯示在名為“htb”的表中已經加載了上述的數據,這就說明已經在Hive和Hbase中成功的映射了表的關系。

在Hive控制臺中如果執行“drop table hbtk1;”命令,將該表刪除的話,那么在Hbase中也會自動刪除與之映射的表,因為該Hbase表是通過Hive表管理的。

映射Hbase外部表

如果在Hive中創建的表創建了分區的話,使用“select * from 表名”語句可能無法查詢到數據,可以執行“select 字段1,字段2,字段3 from 表名”之類的命令,通過指定具體的字段來實現查詢。

值得說明的是,對于整合之后的表是無法進行修改的。對于Hbase中已經存在的表,也可以通過外部表的方式進行映射。

例如在Hbase控制臺中執 行“create ' yongh1',' 'info” 命 令,創 建 名為“yongh1” 的 表,其 列族 為“info”。 在 Hive控制 臺 中 執 行“CREATE EXTERNAL TABLE hbtk2(key int,value string)”、“STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'”、“WITH SERDEPROPERTIES("hbase.columns.mapping"= "info:value")”、“TBLPROPERTIES("hbase.table.name" = "yongh1");”命令,創建名為“hbtk2”的外部表,使其和Hbase中的“user”表建立映射關系。

在Hbase控制臺中執行“put 'yonghu1', ' 1',' info:value', 'xiaoli '”之類的命令,在該表中插入數據。之后在Hive控制臺中執行“select * from hbtk2;”命令,顯示上述插入的數據,說明Hbase中該表的數據已經加載到Hive對應表中了。

注意,如果在Hive中刪除 了“hbtk2”表,在Hbase中的對應表的內容是不會變化的,因為這是一張外部表,刪除操作不會影響到Hbase中的數據。

順便說一下,如果在Hive應用中使用了Thrift Server組件,則允許允許通過指定端口訪問Hive。其默認啟動命令為“hive --service hiveserver”,當實現了 Hive和Hnase的集成后,必須使用“hive --service hiveserver-hiveconf”命令啟動。

注意,還需要指定Zookeeper的 地 址,例 如“hbase.zookeeper.quorum=node0,node1,node2”。如果啟動出錯,可以先 執 行“hive --service hiveserver -hiveconf””命令啟動,之后在Hive控制臺中 執 行“set hbase.zookeeper.quorum=node0,node1, node2”之類的命令可解決問題。

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 免费精品一区二区h| 欧美一区二区人人喊爽| 国内精品视频| jizz亚洲高清在线观看| 亚洲一区二区日韩欧美gif| 又黄又爽视频好爽视频| 99爱视频精品免视看| 久草网视频在线| 亚洲欧美一区二区三区蜜芽| 国产一区三区二区中文在线| 久久综合丝袜长腿丝袜| 22sihu国产精品视频影视资讯| 欧美日韩亚洲国产主播第一区| 波多野结衣在线一区二区| 毛片网站在线看| 亚洲国产成人精品一二区| 国产精品免费电影| 亚洲九九视频| 免费在线成人网| 中国毛片网| 四虎永久在线精品国产免费| 色噜噜中文网| 最近最新中文字幕在线第一页 | 亚洲区第一页| 国产AV无码专区亚洲精品网站| 在线观看国产小视频| 婷婷综合在线观看丁香| 91视频精品| 丰满人妻久久中文字幕| 国产精品亚洲一区二区三区z| 亚洲精品波多野结衣| 国产极品嫩模在线观看91| 美女黄网十八禁免费看| 久久a级片| 99热国产在线精品99| 狠狠操夜夜爽| 国产中文一区a级毛片视频| 狠狠综合久久| 青青网在线国产| 91毛片网| 国产第四页| 8090成人午夜精品| 色综合久久88色综合天天提莫| 人妻少妇乱子伦精品无码专区毛片| 亚洲成av人无码综合在线观看| 精品撒尿视频一区二区三区| 亚洲一区二区约美女探花| 99热国产这里只有精品9九| 日韩专区欧美| 亚洲第一区在线| 中日无码在线观看| 亚洲国产成人麻豆精品| 日本亚洲欧美在线| 青青草国产一区二区三区| 日韩欧美国产中文| 国产产在线精品亚洲aavv| 在线a网站| 欧美在线观看不卡| 国产女人在线| 中文纯内无码H| 亚洲中文久久精品无玛| 亚洲精品欧美日韩在线| 亚洲欧美国产高清va在线播放| 99国产精品免费观看视频| 激情综合图区| 91在线日韩在线播放| 亚洲精品黄| 最新国产网站| 日本在线免费网站| 在线无码av一区二区三区| 亚洲天堂网视频| 人妻无码中文字幕第一区| 日韩高清中文字幕| 欧美成人二区| 91麻豆国产在线| 国产日产欧美精品| 久久美女精品| 中文字幕免费在线视频| 五月天天天色| 亚洲伊人电影| 区国产精品搜索视频| 一本大道无码高清|