您好,登錄后才能下訂單哦!
小編給大家分享一下Hadoop怎么優化,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在用hadoop測試些程序,但是,用的數據都是小數據,用hadoop處理起來相當慢,每個文件就只有幾KB,而文件有幾百個,這樣,20MB的數據運行完就要40多分鐘,而且即使是4臺機器,運行完也要14分鐘,這完全是浪費了hadoop,最后發現,每臺電腦只有兩個Map,這就讓Map過很相當漫長。查了一些資料,發現暫時有兩項現在我用得著
1、設置Map數:
在conf文件夾中的mapred-site.xml文件里加入
mapred.tasktracker.map.tasks.maximum
格式如下:
<property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>10</value> </property>
這里只設置了10個,看網上說的一般一個節點的map數是30到300個,大家可以根據具體情況自行設置
2、設置JVM重用
默認是1,表示一個JVM上最多可以順序執行的task數目(屬于同一個Job)是1。也就是說一個task啟一個JVM。
顯然,這樣每次用一次就重啟JVM很浪費時間,所以可以把這個的重用次數設置大一點,我這里設置成-1,表示無限適用,直到最后把程序跑完。
和設置Map數差不多,同樣是在mapred-site.xml中設置,如下:
<property> <name>mapred.job.reuse.jvm.num.tasks</name> <value>-1</value> </property>
不用再次格式化,可以直接運行。現在,即使是偽分布,運行剛才的程序只需要11分30秒。
筆者將繼續學習,找到更合理的辦法。同時,可以把數據進行壓縮過后在運行程序,但是筆者暫時還沒搞懂這個方法怎么用。
參考網址:
http://blog.csdn.net/wangqiaoshi/article/details/18142885
http://jerrylead.iteye.com/blog/1195335
3、Java heap space的解決辦法:
這個表明java的虛擬的空間不夠了。下面有兩種方法可以解決:
①修改hadoop/bin文件夾中的hadoop文件:
找到“export HADOOP_OPTS=”這一行,修改如下:
export HADOOP_OPTS="-Xmx4096m"//將jvm的空間設置為4GB,也可以設置成你想要的
②(建議使用此方法)也可以修改mapred-site.xml文件:
加入如下內容:
<property> <name>mapred.child.java.opts</name> <value>-Xmx4096m</value> </property>
保存退出重啟hadoop即可。
4、修改HDFS的塊的大小:
默認是64MB,但是一般用128MB,而且有些特殊情況要把塊改小一點。總之,很多情況,需要更改塊的大小,方法如下:
修改conf文件夾中hdfs-site.xml的內容,加入如下內容:
<property> <name>dfs.block.size</name> <value>自己想要的大小,單位是B</value> </property>
保存退出,格式化HDFS
以上是“Hadoop怎么優化”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。