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)定義好它的流程

我們只需要對參數(shù)進行自定義,當(dāng)然也可以對清理或者Map等聲明函數(shù)進行自定義,這是分布式處理數(shù)據(jù)的一個典范。漫畫解釋MapReduce
Java主程序運行MapReduce的例子,具體實操流程請詳看有關(guān)手冊文檔

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

用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.listdescribe 'member' 查看表信息
5.disable 'member' alter'member',{NAME=>'member_id',METHOD=>'delete'}
enable 'member'? 刪除列族
6.disable 'temp_table' 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ù)體系
