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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Haoop基本操作

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

一.HDFS的常用操作

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

(二)、HDFS下的文件操作
1、列出HDFS文件
通過“-ls”命令列出HDFS下的文件
bin/hadoop dfs -ls
bin/hadoop fs -lsr /user/admin/hdfs
注意:在HDFS中未帶參數的“-ls”命令沒有返回任何值,它默認返回HDFS“home”目錄下的內容。HDFS中,沒有當前工作目錄這樣的概念,也沒有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
注意:在執行“-put”時只有兩種可能,即是執行成功和執行失敗。在上傳文件時,文件首先復制到DataNode上,只有所有的DataNode都成功接收完數據,文件上傳才是成功的。

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

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

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

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

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

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

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

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

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

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

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

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

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

2.1.moveFromLocal
hadoop fs -moveFromLocal ?< local src > ... < hdfs dst >
put相類似,命令執行后源文件 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名字不能相同,否則會提示文件已存在,沒有重名的文件會復制到本地

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

3.1.moveToLocal
當前版本中還未實現此命令

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

4.distcp
用來在兩個HDFS之間拷貝數據

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

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

二.Hadoop回收站機制

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

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

[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>??

默認是0,單位是分鐘,這里設置為1天。
刪除數據rm后,會將數據move到當前文件夾下的.Trash目錄。

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

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

查看回收站占用空間及內容
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/*

清空回收站命令(經測試,基本沒用)
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的表及分區刪除,如果回收站功能啟用,實際上也是將文件放到回收站的。如果想快速利用空間,實際上也要進行手工清空回收站操作。目前,沒有找到刪除hive表不進入回收站的方法。
在一次系統跑批中,由于空間有限,要將從oss上下載的數據文件處理完后,立即刪除;但表數據文件實際上是進入了回收站,還是占用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任務查看管理相關

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

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

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

4.作業的更多細節:?
hadoop job -history all output-dir?

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

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

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

8yarn資源管理器相關
yarn application -list
如需殺死當前某個作業,使用kill application-id的命令如下:
yarn application -kill application_1437456051228_1725

四.Hbase常用shell命令

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

?

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


2
)創建表
#
語法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
#
例如:創建表tab1,有兩個family namefied1fied2,且版本數均為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
)查看表的結構
#
語法:describe <table>
#
例如:查看表tab1的結構
hbase(main)>?
describe 'tab1'


5
)修改表結構
修改表結構必須先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.表數據的增刪改查
1
)添加數據?
#
語法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>
#
例如:給表tab1的添加一行記錄:rowkeyrowkey001family namefied1column namecol1valuevalue01timestamp:系統默認
hbase(main)>
?put 'tab1','rowkey001','fied1:col1','value01'
用法比較單一。


2
)查詢數據
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條數據
hbase(main)>?
scan 'tab1',{LIMIT=>5}


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


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


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


c
)刪除表中的所有數據
#
語法: truncate <table>
#
其具體過程是:disable table -> drop table -> create table
#
例如:刪除表tab1的所有數據
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實現遞增
連續執行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

?

轉載于:https://www.cnblogs.com/fiberhome/p/6829601.html

總結

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

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