發表文章

目前顯示的是 10月, 2015的文章

Apache Spark 測試 FPGrowth(傳統C語言與Spark 的簡易測試)

圖片
因為剛剛把 Apache 的 Spark 設定好,順便驗證測試看看效能如何? 剛好發現 Spark 的 MLLIB 內有內建的 FPGrowth 演算法 ,剛好跟它有點熟所以就用這個演算法加上網路上的資料來測試看看。 先講結論:資料量小,不利於使用巨量資料工具。 關於 fpgrowth 演算法請先參考這篇: http://blog.jangmt.com/2015/10/fpgrowth-algorithm.html 底下紀錄測試的過程,及使用的參數。 測試運算資料來源: http://fimi.ua.ac.be/data/ Frequent Itemset Mining Dataset Repository--- LAB (1) Christian Borgelt 寫的 C 語言程式 FPGrowth 對上 Spark scala fpgrowth 程式 --- # FPGrowth 先把 -m1 同時出現的SET設為1個,支持度 5 ,信任度為 80%(default) # 這個案例花費了 0.09s 運算了 0.01s [hadoop@hnamenode FrequentItemset]$ ./fpgrowth -m1 -s5 T10I4D100K.dat T10I4D100K.out.txt ./fpgrowth - find frequent item sets with the fpgrowth algorithm version 6.7 (2015.08.18)         (c) 2004-2015   Christian Borgelt reading T10I4D100K.dat ... [870 item(s), 100000 transaction(s)] done [0.09s]. filtering, sorting and recoding items ... [10 item(s)] done [0.00s]. sorting and reducing transactions ... [281/100000 transaction(s)] done [0.01s]. writing T10I4D100K.out.txt .....

關聯規則--用來發現資料中屬性具有高度關聯的樣式(fpgrowth algorithm)

圖片
這篇不是要講很艱深的東西,簡單解釋一下啥事關聯規則。 基本上上面這張購物欄交易資料,透過底下的 apriori 演算法程式,可以找到啤酒和尿布具有很大的相關性,他的支持度高達 50 。 故事請看這裡 。這是個範例,只是說明關聯規則程式可發覺這樣形式的規則關聯樣式。 在網路上有個人  Christian Borgelt 寫了很多程式,其中有 apriori 和 fpgrowth ,基本上這兩個程式做的工作差不多,但是 fpgrowth 有效率多了。 所以今天用這個 fpgrowth 程式來跑跑看數據。 我從: http://fimi.ua.ac.be/data/ Frequent Itemset Mining Dataset Repository 抓了很多資料 http://fimi.ua.ac.be/data/T10I4D100K.dat http://fimi.ua.ac.be/data/T40I10D100K.dat http://fimi.ua.ac.be/data/webdocs.dat.gz 放到我的電腦內,然後去找 Christian Borgelt http://www.borgelt.net/fpgrowth.html  抓了一些程式。 大概長的這樣: [hadoop@hnamenode FrequentItemset]$ ls -la -rwxrwxr-x. 1 hadoop hadoop      486760 Sep  5 05:17 fpgrowth -rw-rw-r--. 1 hadoop hadoop     4022055 Oct 14  2010 T10I4D100K.dat -rw-rw-r--. 1 hadoop hadoop    15478113 Oct 14  2010 T40I10D100K.dat -rw-rw-r--. 1 hadoop hadoop         151 Oct 17 23:15 webdocs.out 有個很簡單的檔案  sample_fpgr...

Hadoop HDFS 上傳檔案速度測試

因為不太清楚 Hadoop HDFS 在傳輸檔案的速度,所以寫了一個小程式來測試 HDFS 上傳檔案的速度。 先講結論 :hdfs 大概會花3秒的時間做協調的傳輸工作,所以大約 1MB 左右的時間都是 3 秒。傳輸的檔案越大,速度越快。 結果整理如下: 容量      傳輸時間  平均速度(MBytes) 110K 3 36KB/S 1.1MB 3 375KB/S 10.7MB   4 2739.2KB/S --> 2.675MB 107.1MB   9   11.9MB/S 1.0GB   23 44.521MB/S 11GB   216 52.148MB/S 過程及程式測試 shell script [hadoop@hnamenode input]$ cat run_put.sh #!/bin/bash ARGC1='input.txt' ARGC1=$1 if [ "ARGC1" != "" ]; then PROG_START=$(date +%s) hdfs dfs -put ${ARGC1} /public/data/ PROG_END=$(date +%s) PROG_DURING=$(expr $PROG_END - $PROG_START) echo "上傳 ${ARGC1} 檔案到 HDFS:/public/data/ 目錄下" echo "花費時間: ${PROG_DURING} 秒" hdfs dfs -ls -h /public/data/${ARGC1} fi [hadoop@hnamenode input]$ ls -alh total 12G drwxrwxr-x. 2 hadoop hadoop 4.0K Oct 17 13:23 . drwxrwxr-x. 4 hadoop hadoop 4.0K Oct  4 00:26 .. -rw-rw-r--. 1 hadoop hadoop  11G Oct  1 22:33 input100K.txt ...

chrony 網路對時服務

---- chrony 網路對時服務 ---- NTPd 套件在 CentOS 7 以後,逐漸被棄用了。改成 chrony 套件提供服務 # 安裝 chrony 移除 ntp ,並啟動服務 yum remove -y ntp yum install -y chrony systemctl start chronyd.service systemctl enable chronyd.service # 驗證程序是否工作 [root@hnamenode ~]# systemctl status chronyd.service chronyd.service - NTP client/server    Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)    Active: active (running) since Sat 2015-10-10 15:57:08 CST; 23h ago  Main PID: 886 (chronyd)    CGroup: /system.slice/chronyd.service            └─886 /usr/sbin/chronyd -u chrony Oct 10 15:57:08 hnamenode.cm.nsysu.edu.tw systemd[1]: Starting NTP client/server... Oct 10 15:57:08 hnamenode.cm.nsysu.edu.tw chronyd[886]: chronyd version 1.29.1 starting Oct 10 15:57:08 hnamenode.cm.nsysu.edu.tw chronyd[886]: Linux kernel major=3 minor=10 patch=0 Oct 10 15:57:08 hnamenode.cm.nsysu.edu.tw chronyd[886]: hz=100 shift_hz=7 freq_scale=1.00000000...

R in HADOOP - install

R in HADOOP - install ---------------- 就是再 R 透過 lib 呼叫 HADOOP 的 api 跑 hdfs 及 mapreduce 程式 ------ Step 0 : 先把 hadoop 的系統環境變數確認,可以用 env 看到底下設定的環境變數 ------ # 底下為我設定的範例,請以你的 hadoop env 路徑修改 [root@hdatanode17 ~]# cat .bash_profile   # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH # ---------------------------------------------- # HADOOP ENV # ---------------------------------------------- #JAVA export JAVA_HOME=/usr/java/latest export JRE_HOME=/usr/java/latest/jre # HADOOP export HADOOP_PREFIX=/home/hadoop/hadoop export HADOOP_HOME=$HADOOP_PREFIX export HADOOP_COMMON_HOME=$HADOOP_PREFIX export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop export HADOOP_HDFS_HOME=$HADOOP_PREFIX export HADOOP_MAPRED_HOME=$HADOOP_PREFIX export HADOOP_YARN_HOME=$HADOOP_PREFIX export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC -Xmx1g...

Linux Bash Shell for and loop (迴圈)

Linux Shell 上常用的 for in 迴圈結構,可以幫忙很多工作。 ---- for in 迴圈及結構 ---- # 帶入變數內容的迴圈,自訂字串 [mtchang@c7 linux_shell]$ vim for.sh #!/bin/bash for VAR in file1 file2 file3 do echo $VAR done # 設定可以執行權 [mtchang@c7 linux_shell]$ chmod +x for.sh  # 執行 [mtchang@c7 linux_shell]$ ./for.sh  file1 file2 file3 ---- for in 迴圈及結構,搭配程式執行結果 ---- # 將某個檔案或是程式執行的結果,帶入 for 迴圈內。 [mtchang@c7 linux_shell]$ head /etc/passwd | cut -f 1 -d: root bin daemon adm lp sync shutdown halt mail operator $ 使用 $() 將程式結果變成變數內容 [mtchang@c7 linux_shell]$ cat for_fileread.sh  #!/bin/bash for VAR in $(head /etc/passwd | cut -f 1 -d:) do echo $VAR done # 執行 [mtchang@c7 linux_shell]$ ./for_fileread.sh  root bin daemon adm lp sync shutdown halt mail operator ---- for in 進階的新功能 ---- # 程式 [mtchang@c7 linux_shell]$ cat for_adv.sh  #!/bin/bash for i in {1..5} do    echo "for loop 產生 1-5 目前內容為 $i " done echo 'Bash V4.0+ 功能 {START..END.....