MapReduce、Hbase、HDFS基礎(chǔ)知識合集

Hadoop大數(shù)據(jù)平臺,相對于傳統(tǒng)數(shù)據(jù)倉庫,有以下優(yōu)勢:

完全分布式,可以采用廉價機器搭建集群,完全可以滿足海量數(shù)據(jù)的存儲需求。

弱化數(shù)據(jù)格式,數(shù)據(jù)模型和數(shù)據(jù)存儲分離,可以滿足對異構(gòu)數(shù)據(jù)的分析需求。

其平臺有兩個重要貢獻,一是MapReduce體系,二是HDFS分布式文件系統(tǒng),奠定了如今Hadoop平臺在大數(shù)據(jù)方面的重要定位,大部分技術(shù)都繞不開Hadoop。


1.HDFS

? ? ?? 隨著數(shù)據(jù)量越來越大,在一臺機器上已經(jīng)無法存儲所有的數(shù)據(jù)了,那我們會將這些數(shù)據(jù)分配到不同的機器來進行存儲,但是這就帶來一個問題:不方便管理和維護。所以,我們就希望有一個系統(tǒng)可以將這些分布在不同操作服務(wù)器上的數(shù)據(jù)進行統(tǒng)一管理,這就有了分布式文件系統(tǒng)。HDFS是分布式文件系統(tǒng)的其中一種(目前用得最廣泛的一種)

? ? ?? 它的重點就是理解它內(nèi)部是如何實現(xiàn)分布式存儲的,一般搭配zookeeper一起使用,具體內(nèi)部實現(xiàn)詳見:什么是HDFS

2.MapReduce

在Hadoop平臺下,已經(jīng)定義好它的流程

MapReduce執(zhí)行流程

我們只需要對參數(shù)進行自定義,當(dāng)然也可以對清理或者Map等聲明函數(shù)進行自定義,這是分布式處理數(shù)據(jù)的一個典范。漫畫解釋MapReduce

Java主程序運行MapReduce的例子,具體實操流程請詳看有關(guān)手冊文檔


3.Hbase

作為大數(shù)據(jù)平臺下使用的一種數(shù)據(jù)庫,它適用于大數(shù)據(jù)這種多次查詢和插入的情況,使用流程如下


Hbase執(zhí)行流程

用Java操作Hbase教程如下:https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247486279&idx=2&sn=e33f05d77e1e4dd971ad80b85433fc8e&chksm=ebd74a46dca0c3507c966f74dd4fd4f3c2ca76151f9904e68e7c8b535c30213c1c5837aafd6b&mpshare=1&scene=1&srcid=&sharer_sharetime=1591155509899&sharer_shareid=354a9808d9e4ef34aa7e07486dbf6510#rd

4.相關(guān)指令

在shell下進入Hbase目錄,輸入start-Hbase.sh啟動Hbase

1.status 查看數(shù)據(jù)庫狀態(tài)

2.version 查看數(shù)據(jù)庫版本

3.create 'member','member_id','address','info'? 創(chuàng)建表

4.list\rightarrow describe 'member' 查看表信息

5.disable 'member' \rightarrow alter'member',{NAME=>'member_id',METHOD=>'delete'} \rightarrow enable 'member'? 刪除列族

6.disable 'temp_table' \rightarrow drop 'temp_table'? 刪除表

7.put'member','scutshuxue','info:birthday','1987-06-17'? 插入記錄

8.get 'member','scutshuxue'? 獲取一個行鍵的所有信息

9.get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}? 通過TIMESTAMP來獲取數(shù)據(jù)

10.delete 'member','temp','info:age'? 刪除指定行鍵字段

11.count 'member'? 查詢表中有多少行

12.truncate 'member' 清空表?

在shell下進入Hadoop目錄,輸入start-all.sh等價于start-dfs.sh + start-yarn.sh啟動所有進程

但是一般不推薦使用start-all.sh(因為開源框架中內(nèi)部命令啟動有很多問題)。

1. hdfs dfs –ls [文件目錄] ? ? ? 查看指定目錄下內(nèi)容

hdfs dfs -ls -R / ? //顯式目錄結(jié)構(gòu) ? ?

2.?? hdfs dfs –cat [file_path] ? 打開某個已存在的文件

?3、hdfs dfs –put [本地地址] [hadoop目錄]?將本地文件存儲至hadoop

? 4、將hadoop上某個文件down至本地已有目錄下

hadoop dfs -get [文件目錄] [本地目錄]

? 5、hdfs? dfs –rm [文件地址]?刪除hadoop上指定文件

? 6、hdfs?dfs?–mkdir /user/t ?在hadoop指定目錄內(nèi)創(chuàng)建新目錄

? 7、hdfs?dfs? -touchz? /user/new.txt?在hadoop指定目錄下新建一個空文件

? 8、hdfs?dfs?–mv? /user/test.txt? /user/ok.txt?(將test.txt重命名為ok.txt)將hadoop上某個文件重命名

?9、hdfs?dfs?–getmerge [新文件目錄]?將hadoop指定目錄下所有內(nèi)容保存為一個文件,同時down至本地

10、hadoop job –kill? [job-id]?將正在運行的hadoop作業(yè)kill掉

11、安全模式

? (1)退出安全模式

????? NameNode在啟動時會自動進入安全模式。安全模式是NameNode的一種狀態(tài),在這個階段,文件系統(tǒng)不允許有任何修改。

系統(tǒng)顯示Name node in safe mode,說明系統(tǒng)正處于安全模式,這時只需要等待十幾秒即可,也可通過下面的命令退出安全模式:/usr/local/hadoop$bin/hadoop dfsadmin -safemode leave

? (2) 進入安全模式

在必要情況下,可以通過以下命令把HDFS置于安全模式:/usr/local/hadoop$bin/hadoop dfsadmin -safemode enter

12、節(jié)點添加

添加一個新的DataNode節(jié)點,先在新加節(jié)點上安裝好Hadoop,要和NameNode使用相同的配置(可以直接從NameNode復(fù)制),修改HADOOPHOME/conf/master文件,加入NameNode主機名。然后在NameNode節(jié)點上修改HADOOPHOME/conf/master文件,加入NameNode主機名。然后在NameNode節(jié)點上修改HADOOP_HOME/conf/slaves文件,加入新節(jié)點名,再建立新加節(jié)點無密碼的SSH連接,運行啟動命令為:/usr/local/hadoop$bin/start-all.sh

13、負載均衡

HDFS的數(shù)據(jù)在各個DataNode中的分布可能很不均勻,尤其是在DataNode節(jié)點出現(xiàn)故障或新增DataNode節(jié)點時。新增數(shù)據(jù)塊時NameNode對DataNode節(jié)點的選擇策略也有可能導(dǎo)致數(shù)據(jù)塊分布不均勻。用戶可以使用命令重新平衡DataNode上的數(shù)據(jù)塊的分布:/usr/local/hadoop$bin/start-balancer.sh

更多詳細指令可參考Hadoop的API文檔

最后附上大數(shù)據(jù)技術(shù)體系

大數(shù)據(jù)技術(shù)體系
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容