1. 程式人生 > >Sqool和Hive、HBase簡介

Sqool和Hive、HBase簡介

Sqool和Hive、HBase簡介
Sqoop
Sqoop是一個用來將Hadoop和關係型資料庫中的資料相互轉移的開源工具,可以將一個關係型資料庫(例如 : MySQL ,Oracle ,Postgres等)中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料導進到關係型資料庫中。

Hive
不想用程式語言開發MapReduce的朋友比如DB們,熟悉SQL的朋友可以使用Hive開離線的進行資料處理與分析工作。

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。 

注意Hive現在適合在離線下進行資料的操作,就是說不適合在掛在真實的生產環境中進行實時的線上查詢或操作,因為一個字“慢”。 

Hive起源於FaceBook,在Hadoop中扮演資料倉庫的角色。建立在Hadoop叢集的最頂層,對儲存在Hadoop群上的資料提供類SQL的介面進行操作。你可以用 HiveQL進行select、join,等等操作。 

如果你有資料倉庫的需求並且你擅長寫SQL並且不想寫MapReduce jobs就可以用Hive代替。

Hive的內建資料型別可以分為兩大類:(1)、基礎資料型別;(2)、複雜資料型別。其中,基礎資料型別包括:TINYINT、SMALLINT、INT、BIGINT、BOOLEAN、FLOAT、DOUBLE、STRING、BINARY、TIMESTAMP、DECIMAL、CHAR、VARCHAR、DATE。下面的表格列出這些基礎型別所佔的位元組以及從什麼版本開始支援這些型別。

資料型別    所佔位元組    開始支援版本
TINYINT    1byte: -128 ~ 127     
SMALLINT    2byte:-32,768 ~ 32,767     
INT    4byte:-2,147,483,648 ~ 2,147,483,647     
BIGINT    8byte:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807     
BOOLEAN          
FLOAT    4byte單精度     
DOUBLE    8byte雙精度     
STRING          
BINARY         從Hive0.8.0開始支援
TIMESTAMP         從Hive0.8.0開始支援
DECIMAL         從Hive0.11.0開始支援
CHAR         從Hive0.13.0開始支援
VARCHAR         從Hive0.12.0開始支援
DATE         從Hive0.12.0開始支援
複雜型別包括ARRAY、MAP、STRUCT、UNION,這些複雜型別是由基礎型別組成的。

HBase
HBase作為面向列的資料庫執行在HDFS之上,HDFS缺乏隨即讀寫操作,HBase正是為此而出現。HBase以Google BigTable為藍本,以鍵值對的形式儲存。專案的目標就是快速在主機內數十億行資料中定位所需的資料並訪問它。HBase是一個數據庫,一個NoSql的資料庫,像其他資料庫一樣提供隨即讀寫功能,Hadoop不能滿足實時需要,HBase正可以滿足。如果你需要實時訪問一些資料,就把它存入HBase。

你可以用Hive作為靜態資料倉庫,HBase作為資料儲存,放那些進行一些會改變的資料。在Hive中,普通表是儲存在HDFS中,而你可以通過建立EXTERNAL TABLE外表來指定資料儲存位置,可以是系統目錄,也可以是ElasticSearch,還可以是HBase。在使用Sqoop從Mysql匯出資料入Hadoop時,就需要考慮是直接入Hive(此時是普通表),還是匯入資料到HBase,Sqoop同時支援匯入這兩種匯入。