大數據基礎(六) Matlab R2015b MDCE分佈式計算環境搭建

環境:
ubuntu desktop 14.04.04 x64
jdk 1.7
安裝步驟如下:
參考:http://www.jianshu.com/p/f0cefc737dda1.
sudo mkdir -p /mnt/tmp
sudo mount -t iso9660 -o loop /server/matlab/R2015b_glnxa64.iso /mnt/tmp
2.
cd /mnt/tmp
sudo  ./install
3.
彈出圖形界面,選擇輸入license number不聯網,輸入standalone的序列號
安裝全部
finish
rm -rf /mnt/tmp
sudo umount umount /mnt/tmp
4.
copy所有xx文件覆蓋到安裝目錄
http://www.linuxidc.com/Linux/2015-11/125153.htm
R2015b/bin拷貝到相應的目錄下
copy license_standalone.lic到安裝根目錄

5.
vi ~/.bashrc
export PATH=/server/matlab/bin:$PATH
source ~/.bashrc

6.
$bash activate_matlab.sh
在圖形界面下選擇lic文件,激活matlab


7.
copy xx\MATLAB_Production_Server\R2015b\bin\libmwservices.so /server/matlab/bin/glnxa64


完成。

#matlab打開圖形界面
root@matlab-server:/projects/eastmoney/logs# matlab -nodesktop


8.mdce
http://blog.sina.com.cn/s/blog_740773f40100yqg3.html
root@matlab-13:/server/matlab/toolbox/distcomp/bin# ./mdce start

WARNING: The mdce script detected that the number of processes allowed
is limited by ulimit. Be sure that the limit of processes for the ROOT user
(or the user running the mdce service) is set to either "unlimited"
or at least 128 * W, where W is the maximum number of MATLAB Distributed
Computing Server workers that will run on this machine.


Creating LOGBASE directory (/var/log/mdce).
Creating CHECKPOINTBASE directory (/var/lib/mdce).
Creating SECURITY_DIR directory (/var/lib/mdce/security).
Starting the MATLAB Distributed Computing Server in the background.
root@matlab-13:/server/matlab/toolbox/distcomp/bin# ./mdce start


root@matlab-13:/server/matlab/toolbox/distcomp/bin# ./admincenter 
add and find
添加192.168.10.13-192.168.10.14 2臺
start mdce on hosts
next
輸入host密碼
一路next
start所有的host完成。
點擊Test connectivity 並查看測試結果。
注意所有機的/etc/hosts要包含所有節點的ip和host
127.0.0.1 localhost
192.168.10.6 matlab-server
192.168.10.11 matlab-11
192.168.10.12 matlab-12
192.168.10.13 matlab-13
192.168.10.14 matlab-14
參考下邊註釋
【http://blog.csdn.net/huntstart/article/details/51124889
如果用matlab做分佈式計算,在其admin……工具中,尋找主機這一步必不可少。


一開始只接用hostname可能找不到,我用ip地址可以找到,但是測試連接性的時候有太多錯誤。


仔細看了錯誤,多數是hostname找不到導致的,有的則是hostname映射爲本地地址,就是那個127.0.0.1。


一開始覺得可能要配置dns,其實不用。

ubuntu系統中,/etc/hosts中記錄的就是hostname和ip地址的映射表。


sudo vi /etc/hosts進去後,參照localhost的寫法,添加本地網絡中所有主機名和ip地址。


記得將其中本機的主機名和127.0.0.1這條中的IP地址改成真實的地址,不然連接性測試還要出錯。


每臺機子都要改,其實可以寫好一個文本,完了拷貝到各臺機子就好。


這樣做好後,雖然連接性測試還是有錯,但是client測試是通過的,實測分佈式計算可以正常工作。

sudo /etc/init.d/networking restart
http://www.cnblogs.com/niocai/archive/2011/07/16/2107981.html
passed表示通過
matlab job schedular輸入一個job,比如myjob
 創建worker,selectAll,爲每臺主機創建2個workers,總共6個workers,ok!


使用--命令行方法:
linux下無需 mdce install
shell
mdce start %啓動引擎
執行上面兩條命令後,分佈式計算引擎服務程序就安裝完畢了。MDCE就是一個服務進程,在使用MDCE 之前需要首先啓動它。
root@matlab-13:~# /server/matlab/toolbox/distcomp/bin/nodestatus
Summary:
The mdce service on matlab-13 manages the following processes:
     Job manager lookup processes  0
     Job managers                  0
     Workers                       0


root@matlab-13:~# /server/matlab/toolbox/distcomp/bin/startjobmanager -name matlabsky-v


使用--窗口方法:
========================
以下是正常運行過的方法:
http://wenku.baidu.com/link?url=Ce8Ze_6txOdDmnLzhfCLTRDNQiNO0jdKGM4BJfSQHMAYdk-0Gltn5nvbn1tFvjGndKnetyvhJHollV7JzIc5oNZTfhHyFP6FyEKdnKoVUcm
配置節點admincenter
添加ip,job,work然後都start,方法如上。
matlab window
選job
matlab>>parallel>>discover cluster,選擇已創建的job。
配置文件
matlab>>parallel>>cluster profile manager>>properties點edit,輸入參數,比如在files and folders下的manually specify files...add需要並行的m文件,在其他框設定共享目錄輸出。參考:http://blog.csdn.net/marvin521/article/details/16918919
然後valide,pass則可以運行。
運行
matlab>>parallel>>job monitor
matlab彈出的下邊的命令框運行:
>> parpool
Starting parallel pool (parpool) using the 'matlabskyv' profile ... connected to 10 workers.
結果在右側的導航框裏
關閉pool
delete(gcp('nocreate'))
http://blog.sina.com.cn/s/blog_9444ed240102vrma.html
=============================
以下是單機並行pool,不是集羣
開關可以在左側的按鈕選擇start parallel pool或者shutdown parallel pool
例子

tic
sums=0
for a=1:5000000
sums=sums+a
disp(sums)
end
toc
sums =

   1.2500e+13

   1.2500e+13

時間已過 381.425190 秒。


sums =


   1.2500e+11

   1.2500e+11


時間已過 29.581380 秒。
====================
舊版方法2012新版2015b不支持
例子
clear all;
% 尋找資源。
jm = findResource('scheduler', 'type', 'jobmanager', 'name', 'myJM', 'LookupURL', '192.168.0.100');
% 使用剛纔找到的資源建立一個工作
job = createJob(jm);
% 設置該工作的文件關聯,讓所有workers都可以找到原程序文件,需要在Client上設置共享文件夾。
set(job, 'PathDependencies', {'\\192.168.0.101\matlab_code\', '/mnt/'})
% 另一種方法,把用到的原程序文件傳給所有workers。
% set(job, 'FileDependencies', {'hm.m'});
N = 5;
M = 4;
% 建立4個任務,每任務都是算hp(M, N)。
createTask(job, @hp, 1, {{M, N}, {M, N}, {M, N}, {M, N}});
% 提交工作給jobmanager。
submit(job)
% 等待所有workers都把任務做完。
waitForState(job, 'finished')
% 取出計算結果。
results = getAllOutputArguments(job);
% 銷燬Job,釋放資源
destroy(job);
其他參考:
http://my.oschina.net/alphajay/blog/102208
http://blog.csdn.net/wenyusuran/article/details/38312677
http://blog.sina.com.cn/s/blog_740773f40100yqg3.html
http://wenku.baidu.com/link?url=Ce8Ze_6txOdDmnLzhfCLTRDNQiNO0jdKGM4BJfSQHMAYdk-0Gltn5nvbn1tFvjGndKnetyvhJHollV7JzIc5oNZTfhHyFP6FyEKdnKoVUcm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章