日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop, Hbase

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop, Hbase 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://antkillerfarm.github.io/

Hadoop

最近(2016.4),參加公司組織的內部培訓,對Hadoop有了一些認識,特記錄如下。

概述

Hadoop項目由Doug Cutting創建。Doug Cutting也是Lucene項目的創建者。

PS:Lucene是我2007年學習搜索引擎技術時,所接觸到的開源項目。回想起來,簡直恍如隔世啊。

官網:

http://hadoop.apache.org/

官方文檔:

http://hadoop.apache.org/docs/current/

廣義的Hadoop包含一個龐大的生態圈:

http://cqwjfck.blog.chinaunix.net/uid-22312037-id-3969789.html

www.360doc.com/content/14/0113/17/15109633_345010019.shtml

狹義的Hadoop包含如下組件:

Hadoop Common
Hadoop Distributed File System(HDFS)
Hadoop YARN
Hadoop MapReduce

編譯

Hadoop目前不在Ubuntu的官方軟件倉庫中,無法使用apt-get安裝。使用源代碼編譯Hadoop的相關步驟,可在源碼包的BUILDING.txt中找到。這里僅作為補遺之用。總的來說,如無必要還是直接下載bin包比較好,編譯還是很麻煩的。

安裝FindBugs

Hadoop的大部分軟件依賴,都可以使用apt-get安裝。BUILDING.txt里已經寫的很詳細了。

FindBugs是一個Java代碼的靜態分析檢查工具。它的官網:

http://findbugs.sourceforge.net/index.html

它的安裝方法有3種:

1.源代碼安裝。下載源代碼之后,運行ant build,然后設定相關路徑,以供Hadoop使用。

2.apt-get安裝。FindBugs目前不在Ubuntu 14.04的軟件倉庫中,而在Ubuntu 15.10的軟件倉庫中,需要設置源方可安裝。這種方法也需要設定相關路徑,以供Hadoop使用。

2.maven安裝。

mvn compile findbugs:findbugs

這種方法最簡單。安裝完成之后的FindBugs位于maven repository中,而后者通常在~/.m2/repository/下。

這種方法的好處是:由于Hadoop使用maven編譯,maven安裝之后,可以免去設置路徑的步驟。但壞處是:其他不用maven的程序,無法使用該軟件。

這一步只要不出下載不成功之類的錯誤,就算成功。錯誤留給下一步來解決。

PS:maven下載的文件,大約有180MB,且多為小文件,初次運行相當費時。

編譯Hadoop

mvn package -Pdist -DskipTests -Dtar

這里一定要-DskipTests,原因是test不僅速度非常慢,會導致系統響應緩慢,而且即使是官方代碼,也不一定能通過所有的test case。

編譯的結果在hadoop-dist/target下

安裝

Hadoop有Single Node和Cluster兩種安裝模式。一般的部署,當然采用后者。得益于Java的可移植性,Hadoop甚至可以部署到由Raspberry Pi組成的集群中。

前者主要用于開發和學習之用。這里只討論前者。

Single Node又可分為兩種模式:Standalone和Pseudo-Distributed。前者一般僅用于檢驗程序邏輯的正確性,因為這種模式下,并沒有Hadoop常見的各種節點和HFS的概念,所有的程序都運行在一個Java進程中。而后者在配置和運行方面,與Cluster已經相差無幾。

http://www.cnblogs.com/serendipity/archive/2011/08/23/2151031.html

CDH

Cloudera’s Distribution Including Apache Hadoop,簡稱CDH,是目前用的比較多的Hadoop版本,相比于Apache官方的Hadoop來說,有以下優點:

1.CDH基于穩定版Apache Hadoop,并應用了最新Bug修復或者Feature的Patch。Cloudera常年堅持季度發行Update版本,年度發行Release版本,更新速度比Apache官方快,而且在實際使用過程中,CDH表現無比穩定,并沒有引入新的問題。

2.CDH支持Yum/Apt包,Tar包,RPM包,Cloudera Manager四種方式安裝,可自動處理軟件包之間的依賴和版本匹配的問題。

官網:

www.cloudera.com/downloads/cdh.html

何時使用hadoop fs、hadoop dfs與hdfs dfs命令

hadoop fs:使用面最廣,可以操作任何文件系統。

hadoop dfs與hdfs dfs:只能操作HDFS文件系統相關(包括與Local FS間的操作),前者已經Deprecated,一般使用后者。

這些命令的選項大部分與linux shell相同,差異點主要在于:

1.HDFS->Local FS。

hadoop fs -get

1.Local FS->HDFS。

hadoop fs -put

服務端口

Hadoop自帶了一些web服務端口,如下表所示:

默認端口設置位置描述信息
8020namenode RPC交互端口
8021JT RPC交互端口
8080Storm UI
50030mapred.job.tracker.http.addressJOBTRACKER的HTTP服務器和端口
50070dfs.http.addressNAMENODE的HTTP服務器和端口
50010dfs.datanode.addressDATANODE控制端口,主要用于DATANODE初始化時,向NAMENODE提出注冊和應答請求
50020dfs.datanode.ipc.addressDATANODE的RPC服務器地址和端口
50060mapred.task.tracker.http.addressTASKTRACKER的HTTP服務器和端口
50075dfs.datanode.http.addressDATANODE的HTTP服務器和端口
50090dfs.secondary.http.address輔助DATANODE的HTTP服務器和端口

jps

jps是Java提供的虛擬機進程查看工具。

使用方法:

jps -ml

查到的進程,可用如下方法kill:

kill -9 <進程號>

和hadoop有關的進程包括:

名稱說明
QuorumPeerMainZooKeeper Daemon
DataNodeHDFS Data Node
HRegionServerHbase Region Server
HMasterHbase Master
NodeManagerYARN Node Manager
ResourceManagerYARN Resource Manager
nimbusStorm nimbus
supervisorStorm supervisor

MapReduce編程

教程:

http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html

Hbase

官網:

http://hbase.apache.org/

快速開始:

http://hbase.apache.org/book.html#quickstart

啟動腳本:

1.HDFS

sbin/start-dfs.sh

2.Hbase

bin/start-hbase.sh

參考:

http://www.cnblogs.com/cenyuhai/

這個blog專注于hadoop、hbase、spark。

http://www.cnblogs.com/nexiyi/p/hbase_shell.html

HBase的常用Shell命令

http://www.cnblogs.com/Dreama/articles/2219190.html

Hadoop+HBase偽分布式安裝配置

https://sourceforge.net/projects/haredbhbaseclie/

HareDB HBase Client是一個Hbase的Web GUI客戶端,比較好用。

基本概念

HBase以表的形式存儲數據。表有行和列組成。列劃分為若干個列族/列簇(column family)。

Row Keycolumn-family1column-family2column-family3
column1column2column1column2column3column1
key1
key2
key3

如上圖所示,key1,key2,key3是三條記錄的唯一的row key值,column-family1,column-family2,column-family3是三個列族,每個列族下又包括幾列。比如,column-family1這個列族下包括兩列,名字是column1和column2。

HBase中,將一個Column Family中的列存在一起,而不同Column Family的數據則分開。

不要在一張表里定義太多的column family。目前Hbase并不能很好的處理超過2~3個column family的表。因為某個column family在flush的時候,它鄰近的column family也會因關聯效應被觸發flush,最終導致系統產生更多的I/O。

吐槽一下。既然2~3個column family的表都支持的不好,那么似乎表明column family在現階段只是一個設計的概念,離實用尚有距離。這樣做的用意,大概是期待有一天Hbase把這個特性做好之后,上層應用可以無須修改吧。

HBase架構

HBase在物理上是HDFS上的文件,因此它也是主從結構的。

常用的HBase Shell命令

這些命令可在hbase的控制臺輸入。進入控制臺:

bin/hbase shell

名稱命令表達式
查看當前用戶whoami
創建表create ‘表名稱’, ‘列名稱1’,’列名稱2’,’列名稱N’
添加記錄put ‘表名稱’, ‘行名稱’, ‘列名稱:’, ‘值’
查看記錄get ‘表名稱’, ‘行名稱’
查看表中的記錄總數count ‘表名稱’
刪除記錄delete ‘表名’ ,’行名稱’ , ‘列名稱’
刪除一張表先要禁用該表,才能對該表進行刪除,第一步 disable ‘表名稱’ 第二步 drop ‘表名稱’
查看所有記錄scan “表名稱”
查看某個表某個列中所有數據scan “表名稱” , [‘列名稱:’]
更新記錄就是重寫一遍進行覆蓋

二級索引

原生態的HBase由于是按列存儲的key-value對,原則上只能通過key查詢value,因此無法創建主鍵之外的索引。然而,二級索引在當前的數據應用中,已經相當普遍了。如何解決這一問題呢?

方法一:將需要創建鍵的若干列的內容放到key中。比如,某數據表需要對日期和地點建索引,則key的值可以寫成“2017-北京”這樣的形式。

這個方法的缺點在于,放入key中的列相當于是行存儲結構,會降低查詢效率。設想一下,如果所有列都放到key中,那么實際上這個數據表就退化成了普通的按行存儲的關系數據庫了。

一般來說,采用方法一的數據表其key中包含的列數不應超過10個。

方法二:外掛二級索引庫。目前主要實現的方案有ITHBase,IHBase,CCIndex,華為二級索引和360二級索引等。這些方案的實現細節雖有差異,但原理上都差不多,即:在數據本身之外,創建專門的數據結構用于存放二級索引。

細節可參考:

http://blog.csdn.net/dhtx_wzgl/article/details/49423979

Restful

相比于WebService,Restful是一種簡單的多的編程風格。

比如我們使用搜索引擎的時候,輸入的地址:

https://www.bing.com/search?q=java+restful

就是一個典型的Restful請求。

有關Restful風格的內容參見:

https://segmentfault.com/a/1190000006735330

http://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069

http://www.ibm.com/developerworks/library/ws-restful/index.html

還是那句老話,討論一個通訊格式或協議,不討論交互報文的都不是好文章,或者至少不是一個入門的好文章。

常見的Web框架如Spring、Struts都提供了對Restful的支持。

專門負責Restful的框架還有Jersey。其官網:

https://jersey.java.net/

示例:

https://github.com/feuyeux/jax-rs2-guide-II

總結

以上是生活随笔為你收集整理的Hadoop, Hbase的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。