2011年1月13日 星期四

HDFS Performance Test

很久很久以前就想測測看了!測試的項目主要有:
1.使用fuse掛載HDFS然後測試使用cp上傳下載以及使用dd產生檔案的速度
2.使用command (hadoop dfs –get/-put )取得效能
過幾天再補一個使用HDFS API來寫檔的速度好了。
以下是測試結果:
image
我的結論是:1.在小檔案方面基本上可以以忽略的,誤差很大(因為檔案太小)
                    2.下載比上傳快(差異蠻大的)
                    3.使用fuse掛載會慢一點點
                    4..另外參考一個數值:兩台電腦使用scp傳輸1GB時間是23秒(43.5MB/s)

Ubuntu Software RAID 5

之前拿四顆硬碟分別是 Seagate的2T*1  1.5T*3,簡單測一下效能:
A.對照組:在其中一個1.5T的硬碟切一個266G的磁區格式化為EXT4
B.實驗組:把剩下的空間作成RAID5 所以有5.7T也是格式化為EXT4
實驗方式是以dd的指令來產生檔案,bs為512K,連續跑四次扣除最快和最慢的取平均。
         1K B          512KB              1MB            10MB             100MB            1GB              10GB
A   48.9MB/s    700.5MB/s      822.5/MB/s    1091MB/s      1700MB/s       45MB/s          46MB/s
B  22.2 MB/s     553 MB/s        787MB/s       1331MB/s      1700MB/s      363MB/s        120MB/s
image
簡單的結論: Softraid 5 在檔案超過10MB後寫入效能會比單顆硬碟好。

2011年1月5日 星期三

在Ubuntu解決使用lftp亂碼問題

lftp是一個很好用的工具,特別是對於我這個重度ftp的人!然而,有些人就是很喜歡使用Windows來架ftp偏偏又不支援utf-8.....結果lftp就亂碼了@@
解法是在登入後輸入:
set ftp:charset "big5"; set file:charset "utf-8"
就可以正確地顯示編碼了!
另外,介紹一下lftp:
登入: lftp user:pwd@site:port or lftp –u user site:port
我常用的指令除了cd 之外就是…mirror了!
mirror [-c 續傳] [-R 把本地mirror上去][-n 只下載新的檔案][-parallel=n 同時傳輸n個檔案] [remote 資料夾] [本地資料夾]

2011年1月4日 星期二

C2DM on Android 2.2

當測試C2DM的時候在Logcat看到這一行"emulatorUnable to start service Intent { act=com.google.android.c2dm.intent.REGISTER (has extras) }: not found"
解法是你的Android Emulator必須是使用Google APIs Add-On的版本!

2010年12月30日 星期四

SVN Installation on Linux Ubuntu 10.10

很高興lab的大家都至少開始用svn了,對於工作上真的方便很多。整理一下svn的安裝說明,其實設定起來很快速的。
1. 首先安裝相關套件
   $ sudo apt-get install subversion libapache2-svn apache2
2. 建立 repository,我們先假定建一個repository叫做project1 在/opt/svnroot下
   $ sudo mkdir /opt/svnroot; cd /opt/svnroot
   $ sudo svnadmin create project1
   $ sudo chown  -R www-data:subversion project1;sudo chmod -R g+rws project1
3. 讓使用者可以透過https來access資料
   $ sudo vim /etc/apache2/mods-available/dav_svn.conf
   貼上
<Location /project1> #https://localhost/project1
DAV svn
SVNPath /opt/svnroot/project1   #repository位址
AuthType Basic
AuthName "project1 subversion repository"
AuthUserFile /opt/svnroot/passwd
</Location>
4.重新啟動apache2
$ sudo /etc/init.d/apache2 restart
5.hey~我們還沒設定密碼檔記得嗎?
$ sudo htpasswd -c /opt/svnroot/passwd [user_name]
p.s. 如果要新增第二個帳號記得把-c改成-m否則會洗掉喔! 
6. 試著打開瀏覽器到https://[ip]/project1  或者在Windows上安裝trotoissvn 在Linux上可以直接使用$ svn co https://[ip]/project1 來取得資料
 
Reference:https://help.ubuntu.com/community/Subversion

2010年11月12日 星期五

Install Intel C/C++ Compiler(include mkl)

在科學計算領域,很多人都不相信gnu compiler(gcc)!原因有很多,例如效能?程式結果?取而代之的,大家可能會選用Intel 出產的compiler。但其實Intel有noncomertial的版本可以使用不用錢的。網址是: Intel non-comertial Software 我們只要下載Intel® Parallel Studio XE 2011 for Linux後就幾乎都有了。

下載完解壓縮後,記得先安裝相依套件ex. l_ccompxe_2011.0.084_redist.tgz 所有的安裝都是解壓縮後以root執行install.sh就可以了。

C compiler是icc,C++ compiler是icpc

2010年11月11日 星期四

Mount hdfs on Linux Ubuntu 10.04 Server x86-64

其實主要是參考Mounting HDFS ,主要步驟就3個:
ant compile-c++-libhdfs -Dlibhdfs=1
ant package
ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
然而,事情有這麼順利嗎?如果有就好了...以下是我所有步驟,以root權限執行。

  1. 安裝相關套件 JAVA5 JAVA6 subversion ant automake
          1.1加入套件庫
                將以下兩列加入/etc/apt/sources.list
                deb http://us.archive.ubuntu.com/ubuntu/ jaunty    multiverse
                deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates     multiverse
           1.2 更新套件庫、安裝
               sudo apt-get update
               sudo apt-get install subversion ant automake sun-java5-jdk sun-java6-jdk

     2.設定環境變數
               echo "export HADOOP_HOME=[hadoop位址]">>~/.bashrc ex. echo "HADOOP_HOME=/opt/app/hadoop">>~/.bashrc
               echo "export JAVA_HOME="/usr/lib/jvm/java-6-sun">>~/.bashrc
               source ~/.bashrc
     3.編譯第一步
               cd $HADOOP_HOME
               ant clean
               ant compile-c++-libhdfs -Dlibhdfs=1
     4.Download forrest and install fuse
               wget http://apache.ntu.edu.tw//forrest/apache-forrest-0.8.tar.gz
               tar zxf apache-forrest-0.8.tar.gz
               chmod +x apache-forrest-0.8/bin/forrest
               ant package -Djava5.home=/usr/lib/jvm/java-1.5.0-sun -Dforrest.home=$(pwd)/apache-forrest-0.8
               wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Ffuse-2.X%2F&ts=1289382396&use_mirror=nchc
               mv fuse-2.8.5.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Ffuse-2.X%2F fuse-2.8.5.tar.gz            
               tar zxf fuse-2.8.5.tar.gz
               cd fuse-2.8.5
               mkdir -p /opt/app/fuse;./configure --prefix=/opt/app/fuse
               make -j2
               make install
               cd ..
               echo "export FUSE_HOME=/opt/app/fuse">>~/.bashrc
               source ~/.bashrc
     5.最後一步編譯            
               ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
     6. 設定dynamic libarary
               echo "/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/" >>/etc/ld.so.conf
               ldconfig
     7.透過fuse_dfs_wrapper.sh掛載
               cd build/contrib/fuse-dfs
               chmod +x fuse_dfs_wrapper.sh
               echo "export PATH=$PATH:$HADOOP_HOME/build/contrib/fuse-dfs" >>~/.bashrc
               source ~/.bashrc
               mkdir hadoop
               fuse_dfs_wrapper.sh dfs://[namenode]:[port] hadoop -d 參考:conf/core-site.xml ex. fuse_dfs_wrapper.sh dfs://oct5:55011 video -d

這樣就可以把hadoop mount 到hadoop資料夾了。
p.s. namenode請填入hostname不要直接打IP