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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Haoop基本操作

發(fā)布時間:2024/9/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Haoop基本操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.HDFS的常用操作

(一)、HDFS文件的權(quán)限
Linux文件權(quán)限類似
r: read; w:write; x:execute,權(quán)限x對于文件忽略,對于文件夾表示是否允許訪問其內(nèi)容。
如果Linux系統(tǒng)用戶hdp使用hadoop命令創(chuàng)建一個文件,那么這個文件在HDFSowner就是hdp
HDFS的權(quán)限目的:阻止好人錯錯事,而不是阻止壞人做壞事;HDFS相信,你告訴我你是誰,我就認(rèn)為你是誰。

(二)、HDFS下的文件操作
1、列出HDFS文件
通過“-ls”命令列出HDFS下的文件
bin/hadoop dfs -ls
bin/hadoop fs -lsr /user/admin/hdfs
注意:在HDFS中未帶參數(shù)的“-ls”命令沒有返回任何值,它默認(rèn)返回HDFS“home”目錄下的內(nèi)容。HDFS中,沒有當(dāng)前工作目錄這樣的概念,也沒有cd這個命令。

2、列出HDFS目錄下某個文檔中的文件
此處展示的是“-ls ?文件名命令瀏覽HDFS下名為in的文檔中的文件
$ bin/hadoop dfs -ls in

3、上傳文件到HDFS
此處展示的是“-put ?文件1 ?文件2”命令將hadoop-0.20.2目錄下的test1文件上傳到HDFS上并重命名為test
$ bin/hadoop dfs -put test1 test
注意:在執(zhí)行“-put”時只有兩種可能,即是執(zhí)行成功和執(zhí)行失敗。在上傳文件時,文件首先復(fù)制到DataNode上,只有所有的DataNode都成功接收完數(shù)據(jù),文件上傳才是成功的。

4、將HDFS中的文件復(fù)制到本地系統(tǒng)中
此處展示的是“-get ?文件1 ?文件2”命令將HDFS中的in文件復(fù)制到本地系統(tǒng)并命名為getin
$ bin/hadoop dfs -get in getin

5、刪除HDFS下的文檔
此處展示的是“-rmr ?文件命令刪除HDFS下名為out的文檔:
$ bin/hadoop dfs -rmr out

6、查看HDFS下的某個文件
此處展示的是“-cat ?文件命令查看HDFSin文件中的內(nèi)容:
$ bin/hadoop dfs -cat in/*
輸出:
hello world
hello hadoop

PS:bin/hadoop dfs 的命令遠不止這些,對于其他的操作,可以通過“-help commandName”命令所列出的清單查看

(三)、管理與更新
1、報告HDFS的基本統(tǒng)計信息
通過“-report”命令查看HDFS的基本統(tǒng)計信息:
$ bin/hadoop dfsadmin -report

2、退出安全模式
NameNode在啟動時會自動進入安全模式。安全模式是NameNode的一種狀態(tài),在這個階段,文件系統(tǒng)不允許有任何的修改。安全模式的目的是在系統(tǒng)啟動時檢查各個DataNode上數(shù)據(jù)塊的有效性,同時根據(jù)策略對數(shù)據(jù)塊進行必要的復(fù)制和刪除,當(dāng)數(shù)據(jù)塊的最小百分比數(shù)滿足配置的最小副本數(shù)條件時,會自動退出安全模式。
$ bin/hadoop dfsadmin -safemode leave

3、進入安全模式
$ bin/hadoop dfsadmin -safemode enter

4、添加節(jié)點
可擴展性是HDFS的一個重要的特性,向HDFS集群中添加節(jié)點是很容易實現(xiàn)的。添加一個新的DataNode節(jié)點,首先在新加的節(jié)點上安裝好hadoop,要和NameNode使用相同的配置,修改HADOOP_HOME/conf/master文件,加入NameNode主機名。然后在NameNode節(jié)點上修改HADOOP_HOME/conf/slaves文件,加入新節(jié)點主機名。再建立到新節(jié)點無密碼SSH連接,運行啟動命令:
$ bin/start-all.sh
通過http://(主機名):50070可查看到新的DataNode節(jié)點添加成功

5、負(fù)載均衡
用戶可以使用下面的命令來重新平衡DataNode上的數(shù)據(jù)塊的分布:
$ bin/start-balancer.sh

(四)、其他相關(guān)有用命令
1.count
hadoop fs -count < hdfs path >
統(tǒng)計hdfs對應(yīng)路徑下的目錄個數(shù),文件個數(shù),文件總計大小 顯示為目錄個數(shù),文件個數(shù),文件總計大小,輸入路徑

2.put
hadoop fs -put < local file > < hdfs file >
hdfs file的父目錄一定要存在,否則命令不會執(zhí)行

hadoop fs -put ?< local file or dir >...< hdfs dir >
hdfs dir 一定要存在,否則命令不會執(zhí)行

hadoop fs -put - < hdsf ?file>
從鍵盤讀取輸入到hdfs file中,按Ctrl+D結(jié)束輸入,hdfs file不能存在,否則命令不會執(zhí)行

2.1.moveFromLocal
hadoop fs -moveFromLocal ?< local src > ... < hdfs dst >
put相類似,命令執(zhí)行后源文件 local src 被刪除,也可以從從鍵盤讀取輸入到hdfs file

2.2.copyFromLocal
hadoop fs -copyFromLocal ?< local src > ... < hdfs dst >
put相類似,也可以從從鍵盤讀取輸入到hdfs file

3.get
hadoop fs -get < hdfs file > < local file or dir>
local file不能和 hdfs file名字不能相同,否則會提示文件已存在,沒有重名的文件會復(fù)制到本地

hadoop fs -get < hdfs file or dir > ... < local ?dir >
拷貝多個文件或目錄到本地時,本地要為文件夾路徑
注意:如果用戶不是root local 路徑要為用戶文件夾下的路徑,否則會出現(xiàn)權(quán)限問題,

3.1.moveToLocal
當(dāng)前版本中還未實現(xiàn)此命令

3.2.copyToLocal
hadoop fs -copyToLocal < local src > ... < hdfs dst >
get相類似

4.distcp
用來在兩個HDFS之間拷貝數(shù)據(jù)

5.setrep
hadoop fs -setrep -R 3 < hdfs path >
改變一個文件在hdfs中的副本個數(shù),上述命令中數(shù)字3為所設(shè)置的副本個數(shù),-R選項可以對一個人目錄下的所有目錄+文件遞歸執(zhí)行改變副本個數(shù)的操作

(五)、附HDFS常用命令集合使用格式及含義
-ls ? ? ?-ls <路徑> ? ? ?查看指定路徑的當(dāng)前目錄結(jié)構(gòu)
-lsr ? ? ?-lsr <路徑> ? ? ?遞歸查看指定路徑的目錄結(jié)構(gòu)
-du ? ? ?-du <路徑> ? ? ?統(tǒng)計目錄下個文件大小
-dus ? ? ?-dus <路徑> ? ? ?匯總統(tǒng)計目錄下文件()大小
-count ? ? ?-count [-q] <路徑> ? ? ?統(tǒng)計文件()數(shù)量
-mv ? ? ?-mv <源路徑> <目的路徑> ? ? ?移動
-cp ? ? ?-cp <源路徑> <目的路徑> ? ? ?復(fù)制
-rm ? ? ?-rm [-skipTrash] <路徑> ? ? ?刪除文件/空白文件夾
-rmr ? ? ?-rmr [-skipTrash] <路徑> ? ? ?遞歸刪除
-put ? ? ?-put <多個linux上的文件> <hdfs路徑> ? ? ?上傳文件
-copyFromLocal ? ? ?-copyFromLocal <多個linux上的文件> <hdfs路徑> ? ? ?從本地復(fù)制
-moveFromLocal ? ? ?-moveFromLocal <多個linux上的文件> <hdfs路徑> ? ? ?從本地移動
-getmerge ? ? ?-getmerge <源路徑> <linux路徑> ? ? ?合并到本地
-cat ? ? ?-cat <hdfs路徑> ? ? ?查看文件內(nèi)容
-text ? ? ?-text <hdfs路徑> ? ? ?查看文件內(nèi)容
-copyToLocal ? ? ?-copyToLocal [-ignoreCrc] [-crc] [hdfs源路徑] [linux目的路徑] ? ? ?從本地復(fù)制
-moveToLocal ? ? ?-moveToLocal [-crc] <hdfs源路徑> <linux目的路徑> ? ? ?從本地移動
-mkdir ? ? ?-mkdir <hdfs路徑> ? ? ?創(chuàng)建空白文件夾
-setrep ? ? ?-setrep [-R] [-w] <副本數(shù)> <路徑> ? ? ?修改副本數(shù)量
-touchz ? ? ?-touchz <文件路徑> ? ? ?創(chuàng)建空白文件
-stat ? ? ?-stat [format] <路徑> ? ? ?顯示文件統(tǒng)計信息
-tail ? ? ?-tail [-f] <文件> ? ? ?查看文件尾部信息
-chmod ? ? ?-chmod [-R] <權(quán)限模式> [路徑] ? ? ?修改權(quán)限
-chown ? ? ?-chown [-R] [屬主][:[屬組]] 路徑 ? ? ?修改屬主
-chgrp ? ? ?-chgrp [-R] 屬組名稱 路徑 ? ? ?修改屬組
-help ? ? ?-help [命令選項] ? ? ?幫助

二.Hadoop回收站機制

1、簡介
HDFS里,刪除文件時,不會真正的刪除,其實是放入回收站/trash,回收站里的文件可以快速恢復(fù)。
可以設(shè)置一個時間閥值,當(dāng)回收站里文件的存放時間超過這個閥值或是回收站被清空時,文件才會被徹底刪除,并且釋放占用的數(shù)據(jù)塊。

2、回收站功能啟用
Hadoop的回收站trash功能默認(rèn)是關(guān)閉的,所以需要在core-site.xml中手動開啟。
修改core-site.xml,增加[在每個節(jié)點(不僅僅是主節(jié)點)上添加配置 /etc/hadoop/conf/core-site.xml,增加如下內(nèi)容]

[html]?view plain?copy

?print?

1.?? <property>???

2.?? <name>fs.trash.interval</name>???

3.?? <value>1440</value>???

4.?? <description>Number?of?minutes?between?trash?checkpoints.???

5.?? If?zero,?the?trash?feature?is?disabled.???

6.?? </description>???

7.?? </property>??

默認(rèn)是0,單位是分鐘,這里設(shè)置為1天。
刪除數(shù)據(jù)rm后,會將數(shù)據(jù)move到當(dāng)前文件夾下的.Trash目錄。

3、回收站日常操作
存放位置
hadoop fs -ls /user/hadoop/.Trash/Current/

查看hdfs存儲空間使用情況
hadoop dfsadmin -report

查看回收站占用空間及內(nèi)容
hadoop dfs -du -h /user/hadoop/.Trash/
hadoop fs -ls /user/hadoop/.Trash/Current/
hadoop dfs -ls /user/hadoop/.Trash/

清空回收站
刪除.Trash目錄
hadoop fs -rmr .Trash
hadoop fs -rmr .Trash ?
hadoop dfs -rmr /user/hadoop/.Trash/*

清空回收站命令(經(jīng)測試,基本沒用)
hdfs dfs -expunge?
bin/hadoop dfs -expunge
bin/hadoop dfs -ls .Trash/Current/user/grid
?
4hdfs文件直接刪除不進回收站
-- ?hadoop dfs -rmr /tmp/nisj/oss/
-- ?hadoop dfs -rmr -skipTrash /tmp/nisj/oss/

5hive表刪除情況
hive的表及分區(qū)刪除,如果回收站功能啟用,實際上也是將文件放到回收站的。如果想快速利用空間,實際上也要進行手工清空回收站操作。目前,沒有找到刪除hive表不進入回收站的方法。
在一次系統(tǒng)跑批中,由于空間有限,要將從oss上下載的數(shù)據(jù)文件處理完后,立即刪除;但表數(shù)據(jù)文件實際上是進入了回收站,還是占用hdfs空間,所以編寫了一個定時腳本進行回收站的清空操作。
[hadoop@emr-header-1 getDataFromOss]$ cat truncate_trash.sh?

[java]?view plain?copy

?print?

1.?? #!/usr/bin/env?bash??

2.?? ??

3.?? source?/etc/profile;??

4.?? /usr/lib/hadoop-current/bin/hadoop?dfs?-rmr?/user/hadoop/.Trash/*?>>/home/hadoop/nisj/getDataFromOss/trash_truncate.log?2>&1??

?

?

?

?

?

?

三.Hadoop任務(wù)查看管理相關(guān)

1.查看 Job 信息:
hadoop job -list?

2.殺掉 Job?
hadoop ?job –kill ?job_id

3.指定路徑下查看歷史日志匯總:
hadoop job -history output-dir?

4.作業(yè)的更多細節(jié):?
hadoop job -history all output-dir?

5.打印mapreduce完成百分比和所有計數(shù)器:
hadoop job –status job_id?

6.殺死任務(wù)。被殺死的任務(wù)不會不利于失敗嘗試:
hadoop jab -kill-task <task-id>?

7.使任務(wù)失敗。被失敗的任務(wù)會對失敗嘗試不利:
hadoop job ?-fail-task <task-id>

8yarn資源管理器相關(guān)
yarn application -list
如需殺死當(dāng)前某個作業(yè),使用kill application-id的命令如下:
yarn application -kill application_1437456051228_1725

四.Hbase常用shell命令

1.進入hbase shell console
$HBASE_HOME/bin/hbase shell
如果有kerberos認(rèn)證,需要事先使用相應(yīng)的keytab進行一下認(rèn)證(使用kinit命令);認(rèn)證成功之后再使用hbase shell進入可以使用whoami命令可查看當(dāng)前用戶?
hbase(main)>?
whoami

?

2.表的管理
1
)查看有哪些表?
hbase(main)>?
list


2
)創(chuàng)建表
#
語法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
#
例如:創(chuàng)建表tab1,有兩個family namefied1fied2,且版本數(shù)均為2
hbase(main)>?
create 'tab1',{NAME => 'fied1', VERSIONS => 2},{NAME => 'fied2', VERSIONS => 2}


3
)刪除表
分兩步:首先disable,然后drop
例如:刪除表tab1
hbase(main)>?
disable 'tab1'
hbase(main)>
?drop 'tab1'


4
)查看表的結(jié)構(gòu)
#
語法:describe <table>
#
例如:查看表tab1的結(jié)構(gòu)
hbase(main)>?
describe 'tab1'


5
)修改表結(jié)構(gòu)
修改表結(jié)構(gòu)必須先disable
#
語法:alter 'tab1', {NAME => 'fied1'}, {NAME => 'fied2', METHOD => 'delete'}
#
例如:修改表tab1cfTTL180
hbase(main)>?
disable 'tab1'
hbase(main)>?
alter 'tab1',{NAME=>'body',TTL=>'15552000'},{NAME=>'meta', TTL=>'15552000'}
hbase(main)>
?enable 'tab1'

?

3.表數(shù)據(jù)的增刪改查
1
)添加數(shù)據(jù)?
#
語法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>
#
例如:給表tab1的添加一行記錄:rowkeyrowkey001family namefied1column namecol1valuevalue01timestamp:系統(tǒng)默認(rèn)
hbase(main)>
?put 'tab1','rowkey001','fied1:col1','value01'
用法比較單一。


2
)查詢數(shù)據(jù)
a
)查詢某行記錄
#
語法:get <table>,<rowkey>,[<family:column>,....]
#
例如:查詢表tab1rowkey001中的fied1下的col1的值
hbase(main)>?
get 'tab1','rowkey001', 'fied1:col1'
#
或者:
hbase(main)>?
get 'tab1','rowkey001', {COLUMN=>'fied1:col1'}
#
查詢表tab1rowke002中的fied1下的所有列值
hbase(main)>?
get 'tab1','rowkey001'


b
)掃描表
#
語法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num}
#
另外,還可以添加STARTROWTIMERANGEFITLER等高級功能
#
例如:掃描表tab1的前5條數(shù)據(jù)
hbase(main)>?
scan 'tab1',{LIMIT=>5}


c
)查詢表中的數(shù)據(jù)行數(shù)
#
語法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}
# INTERVAL
設(shè)置多少行顯示一次及對應(yīng)的rowkey,默認(rèn)1000CACHE每次去取的緩存區(qū)大小,默認(rèn)是10,調(diào)整該參數(shù)可提高查詢速度
#
例如,查詢表tab1中的行數(shù),每100條顯示一次,緩存區(qū)為500
hbase(main)>?
count 'tab1', {INTERVAL => 100, CACHE => 500}


3
)刪除數(shù)據(jù)
a )
刪除行中的某個列值
#
語法:delete <table>, <rowkey>,? <family:column> , <timestamp>,必須指定列名
#
例如:刪除表tab1rowkey001中的fied1:col1的數(shù)據(jù)
hbase(main)>?
delete 'tab1','rowkey001','fied1:col1'
注:將刪除改行fied1:col1列所有版本的數(shù)據(jù)


b )
刪除行
#
語法:deleteall <table>, <rowkey>,? <family:column> , <timestamp>,可以不指定列名,刪除整行數(shù)據(jù)
#
例如:刪除表tab1rowk001的數(shù)據(jù)
hbase(main)>?
deleteall 'tab1','rowkey001'


c
)刪除表中的所有數(shù)據(jù)
#
語法: truncate <table>
#
其具體過程是:disable table -> drop table -> create table
#
例如:刪除表tab1的所有數(shù)據(jù)
hbase(main)>
?truncate 'tab1'

?

4.其他命令
1
status命令
hbase(main):008:0>?
status


2
version命令
hbase(main):007:0>
?version
3
exists 命令——查看表是否存在
hbase(main):014:0>
?exists 'tab1'


4
incr 命令
'tab1'這個列增加 uid 字段,并使用counter實現(xiàn)遞增
連續(xù)執(zhí)行incr以上,COUNTER VALUE 的值會遞增,通過get_counter
hbase(main):010:0>?
incr 'tab1', 'row2', 'uid', 2
COUNTER VALUE = 2
hbase(main):011:0>
?incr 'tab1', 'row2', 'uid', 3
COUNTER VALUE = 5

?

轉(zhuǎn)載于:https://www.cnblogs.com/fiberhome/p/6829601.html

總結(jié)

以上是生活随笔為你收集整理的Haoop基本操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。