hadoop生態圈中hive模塊100問

一、嘛是數據倉庫和數據庫的區別?

hive的是一個數據倉庫,數據倉庫是面向主題的,偏向於做OLAP(online-Analytical-Processing),只要工作是方便給決策人員提供報表,來做決策分析。而傳統關係型數據庫比如MySQL是面向應用,主要工作是在指定的隔離機制中做增刪改查的,偏向OLTP(Online-Transation-Processing)聯機事務處理,同樣二者數據存儲結構也不同,OLAP存儲歷史的、聚集的、多維集成的數據,DB大小可在100G到TB級別(這也是絕大數數據倉庫使用HDFS做底層存儲的原因!!而不是windows的NTFS),OLTP是當前的最新的、二位分立的數據,DB大小在100M到GB級別。

二、 爲什麼要一般會把hive的元數據(版本分區等等信息)存在mysql中?

想說的是,hive只是個工具,包括它的數據分析,依賴於mapreduce,它的數據管理,依賴於外部系統,這一步其實不是必須的,因爲Hive默認的metadata(元數據)是存儲在Derby裏面的但是有一個弊端就是同一時間只能有一個Hive實例訪問,這適合做開發程序時做本地測試。

Hive提供了增強配置,可將數據庫替換成mysql等關係型數據庫,將存儲數據獨立出來在多個服務示例之間共享。

由此可見,你在哪路徑下,執行hive指令,就在哪路徑下生成metastore_db。建一套數據庫文件,這樣是極其不合適的,公司裏每個人若不一樣,則會顯得非常混雜。導致員工之間無法公用交流。

  ***爲此,需公用的,mysql。***

  這也是爲什麼,在安裝hive時,也需要配置mysql了,怪就怪在Derby太輕量無法執行並行操作

三、把其他數據源,比如數據庫中的數據導入hive是用sqoop呢還是hive呢(當然在落地Hive之前要做ETL)?

sqoop簡介:Apache Sqoop is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases.也就是說sqoop是一種工具,用於在Apache Hadoop和結構化數據存儲(如關係數據庫)之間高效傳輸批量數據。

我們知道hive的作用就是把數據映射成數據倉庫的一張表,提供類SQL的查詢語言然後做數據分析,但是如果涉及到比較複雜的操作,就需要編寫UDF函數,可以是可以,但是比較麻煩,需要自己編程實現。但是sqoop本身就是一個工具,使用它將數據庫的數據導入數據倉庫比較方便。

未完待續!thanks for reading

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章