當前位置:首頁 » 文件管理 » sparkhdfs文件夾

sparkhdfs文件夾

發布時間: 2023-06-17 02:37:14

① 如何在spark中刪除hdfs的某個文件夾

hadoop 添加刪除datanode及tasktracker

首先:

建議datanode和tasktracker分開寫獨立的exclude文件,因為一個節點即可以同時是datanode和tasktracker,也可以單獨是datanode或tasktracker。

1、刪除datanode

修改namenode上的hdfs-site.xml

<property>
<name>dfs.hosts</name>
<value>/usr/local/hadoop/conf/datanode-allow-list</value>
</property>

<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/conf/datanode-deny-list</value>
</property>

其中dfs.host列出了連入namenode的節點,如果為空,則所有的datanode都可以連入namenode。如果不為空,則文件中存在的datanode可以連入。
dfs.hosts.exclude列出了禁止連入namenode的節點。
如果一個節點同時存在於dfs.hosts和dfs.hosts.exclude,則禁止連入。

具體步驟

(1)將要刪除的datanode加入到dfs.hosts.exclude指定的文件中。(最好使用主機名,IP有時可能不生效)

(2)動態刷新配置,不需要重啟namenode

hadoop dfsadmin -refreshNodes

(3)通過hadoop dfsadmin -report或webui,可以看到,該datanode的狀態為Decommissioning

(4)等待一段時間,該節點為dead狀態。

(5)刪除dfs.hosts文件中該節點 即下架目標機器後,再次編輯dfs.hosts.exclude,把剛才下架的機器的ip或機器名移走

(6)

hadoop dfsadmin -refreshNodes

註:按照上面的操作後,如果你想要重新啟用該節點為datanode,從dfs.hosts.exclude中刪除該節點,refreshNodes,然後,到該節點上,重啟啟動該datanode:

/usr/local/hadoop/bin/hadoop-daemon.sh stop datanode
/usr/local/hadoop/bin/hadoop-daemon.sh start datanode

注:正確的刪除datanode的方法應該是按照上面的方法,使用exclude文件,而不應該直接去datanode上去sotp datanode,這樣會造出數據丟失,而且stop以後,webui和hadoop dfsadmin -report都仍然顯示該datanode節點。除非重新啟動namenode。
之所以重新啟用exclude的節點時可以stop datanode,因為此時該datanode不包含在cluster中,所以,stop後不會造成數據丟失。

2、添加datanode
如果存在dfs.hosts文件,且不為空,則添加新的datanode到該文件中,refreshNodes。
到新節點上,啟動即可

/usr/local/hadoop/bin/hadoop-daemon.sh start datanode

如果不存在dfs.hosts文件,或文件為空,直接啟動新節點即可。

3、刪除tasktracker
原理和步驟與刪除datanode一樣。
<property>
<name>mapred.hosts</name>
<value>/usr/local/hadoop/conf/tasktracker-allow-list</value>
</property>

<property>
<name>mapred.hosts.exclude</name>
<value>/usr/local/hadoop/conf/tasktracker-deny-list</value>
</property>

動態刷新配置的命令為:
hadoop mradmin -refreshNodes
立刻生效,可以在webui中看到,nodes節點數量的變化,以及Excluded Nodes節點的變化。
具體的步驟參考上面的刪除datanode的步驟

註:按照上面的操作後,如果你想要重新啟用該節點為tasktracker,從mapred.hosts.exclude中刪除該節點,refreshNodes,然後,到該節點上,重啟啟動該tasktracker:

/usr/local/hadoop/bin/hadoop-daemon.sh stop tasktracker
/usr/local/hadoop/bin/hadoop-daemon.sh start tasktracker

注:正確的刪除tasktracker的方法應該是按照上面的方法,使用exclude文件,而不應該直接去tasktracker上去sotp tasktracker,這樣會造成job失敗,而且stop以後,webui上仍然顯示該tasktracker節點。除非重新啟動jobtracker。

我遇到的一個問題:
在exclude文件中,我使用了IP,發現tasktracker仍然參與計算。
在webui中發現,Excluded Nodes中存在該IP,Nodes中仍然存在該tasktracker的hostname。
解決的辦法就是,在exclude中使用hostname而不使用IP。
判斷是否真正生效:如果exclued文件中正確的填寫了要失效的node,則總得nodes數量應該減小。

4、添加tasktracker
如果存在mapred.hosts文件,且不為空,則添加新的tasktracker到該文件中,refreshNodes。
到新節點上,啟動即可

/usr/local/hadoop/bin/hadoop-daemon.sh start tasktracker

如果不存在mapred.hosts文件,或文件為空,直接啟動新節點即可。

6、添加或刪除datanode後,平衡磁碟利用率
運行bin/start-balancer.sh,這個會很耗時間
備註:
如果不balance,那麼cluster會把新的數據都存放在新的node上,這樣會降低mr的工作效率;

/usr/local/hadoop/bin/start-balancer.sh -threshold 0.1
7下架目標機器後,再次編輯mapred.hosts.exclude,把剛才下架的機器的ip或機器名移走

threshold 是平衡閾值,默認是10%,值越低各節點越平衡,但消耗時間也更長。
balancer也可以在有mr job的cluster上運行,默認dfs.balance.bandwidthPerSec很低,為1M/s。在沒有mr job時,可以提高該設置加快負載均衡時間。
在namenode的hdfs-site.xml中增加設置balance的帶寬,默認只有1M:

<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>10485760</value><description>Specifies themaximum bandwidth that each datanode can utilize for the balancing purpose interm of the number of bytes per second.</description>
</property>

② 如何向Spark個節點共享靜態文件和jar包

addFile方法可以接收本地文件(或者HDFS上的文件),甚至是文件夾(如果是文件夾,必須是HDFS路徑),然後Spark的Driver和Exector可以通過SparkFiles.get()方法來獲取文件的絕對路徑(Get the absolute path of a file added through SparkContext.addFile()),addFile的函數原型如下:
def addFile(path: String): Unit
def addFile(path: String, recursive: Boolean): Unit
addFile把添加的本地文件傳送給所有的Worker,這樣能夠保證在每個Worker上正確訪問到文件。另外,Worker會把文件放在臨時目錄下。因此,比較適合用於文件比較小,計算比較復雜的場景。如果文件比較大,網路傳送的消耗時間也會增長。
Spark中addFile載入配置文件
val qqwry = "hdfs://dcnameservice/mcloud/data/datacenter/aws/mediastat/tools/qqwry.dat"//分發文件sc.addFile(qqwry)

獲取分發文件絕對路徑:
SparkFiles.get("qqwry.dat");

我們在使用Spark的時候有時候需要將一些數據分發到計算節點中。一種方法是將這些文件上傳到HDFS上,然後計算節點從HDFS上獲取這些數據。當然我們也可以使用addFile函數來分發這些文件。注意,如果是spark程序通過yarn集群上載入配置文件,path必須是集群hdfs的絕對路徑.

③ spark和hadoop的區別

spark和hadoop的區別:誕生的先後順序、計算不同、平台不同。
誕生的先後順序,hadoop屬於第一代開源大數據處理平台,而spark屬於第二森盯代。屬於下一代的spark肯定在綜合評價上要優於第一代的hadoop。
計算不同spark和hadoop在分布式計算的底層思路上,其實宏昌是極為相似的,即maprece分布式運算模此絕和型:將運算分成兩個階段,階段1-map,負責從上游拉取數據後各自運算,然後將運算結果shuffle給下游的rece,rece再各自對通過shuffle讀取來的數據進行聚合運算spark和hadoop在分布式計算的具體實現上,又有區別;hadoop中的maprece運算框架,一個運算job,進行一次map-rece的過程;而spark的一個job中,可以將多個map-rece過程級聯進行。
平台不同spark和hadoop區別是,spark是一個運算平台,而hadoop是一個復合平台(包含運算引擎,還包含分布式文件存儲系統,還包含分布式運算的資源調度系統),所以,spark跟hadoop來比較的話,主要是比運算這一塊大數據技術發展到目前這個階段,hadoop主要是它的運算部分日漸式微,而spark目前如日中天,相關技術需求量大,offer好拿。

熱點內容
暢玩守望先鋒最少要什麼配置 發布:2025-02-05 23:37:52 瀏覽:452
雲桌面伺服器啟動不了 發布:2025-02-05 23:29:09 瀏覽:25
uc緩存視頻怎麼徹底清理 發布:2025-02-05 23:24:16 瀏覽:632
家用電腦該怎麼樣配置 發布:2025-02-05 23:24:13 瀏覽:337
唐門按鍵精靈腳本 發布:2025-02-05 23:24:02 瀏覽:6
博圖加密演算法 發布:2025-02-05 23:07:48 瀏覽:548
幀數腳本 發布:2025-02-05 23:06:26 瀏覽:855
android菜單效果 發布:2025-02-05 23:00:54 瀏覽:673
怎樣把獨立存儲器放入此電腦 發布:2025-02-05 23:00:21 瀏覽:89
取消微信設置密碼在哪裡設置 發布:2025-02-05 22:48:49 瀏覽:667