發表文章

目前顯示的是有「hadoop」標籤的文章

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 ...

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...

Apache HADOOP 安裝多主機(cluster)模式在 CentOS Linux 7

圖片
HADOOP 安裝多主機(cluster)模式, 首先建議你要有4台電腦以上,才會好工作。 (0) 把 OS 安裝好 此範例為 CentOS Linux 7 namenode 使用 server with GUI 的安裝選項 datanode 使用 @base @core @development 的選項 /home 目錄獨立一個分割區或硬碟,給 datanode or namenode 使用。 (1) 把所有主機的 dns name 及 hostname 設定好 [hadoop@namenode ~]$ host namenode namenode.jangmt.com has address 192.168.1.100 [hadoop@namenode ~]$ host datanode1 datanode1.jangmt.com has address 192.168.1.1 [hadoop@namenode ~]$ host datanode2 datanode2.jangmt.com has address 192.168.1.2 [hadoop@namenode ~]$ host datanode3 datanode3.jangmt.com has address 192.168.1.3 為了方便識別主機,建議將主機的名稱修改為設定的名稱 修改方式可以透過 hostnamectl 指令修改。 可以參考 http://blog.jangmt.com/2015/06/centos7-rhel7-runlevel.html  (在 CENTOS 7 的版本可以使用 hostnamectl 來改變系統 hostname) (2)  先達成每台主機可以 ssh key 認證 可以參考 http://blog.jangmt.com/2015/09/ssh-key-linux.html 基本上建議建立一個 hadoop 帳號,這個使用者為主要放置程式的使用者,同時也是 HDFS 的管理員。 然後 hadoop 可以登入 root , root 可以登入 hadoop 都無須密碼,這樣交換資料也相較容易。 [hadoop@namenode ~]$ ssh root@datanode1 ifco...

在 CentOS 7 安裝 snmpd 服務(CentOS 7 SNMP install)

---- 在 CentOS 7 安裝 snmpd 服務(CentOS 7 SNMP install) ---- 在 CentOS 7 安裝 snmpd 服務,讓主機的資訊可以透過網路取得。 環境是 CentOS 7 x86_64 版本防火牆已經關閉, SELINUX 設定為 permissive [root@hnamenode2 snmp]# getenforce Permissive # 安裝 snmpd 元件 [root@hnamenode2 ~]# yum -y install net-snmp net-snmp-utils # 修改設定檔,更換為底下資訊 [root@hnamenode2 snmp]# cat /etc/snmp/snmpd.conf # snmp 存取資訊 com2sec local           localhost       public com2sec localnet         192.168.0.0/16  public(public建議修改為其他的帳號) group   MyRWGroup v1            local group   MyROGroup v1            localnet group   MyROSystem v1           local group   MyROSystem v2c          local group   MyROSystem usm          local group   MyROGroup v1            localnet group   MyROGr...

變更 hadoop 的 HDFS 檔案系統 block size

圖片
在 hadoop 2.7 版本的 hadoop 內把預設的 block size 設定為 128MB ,對於規模不大的教學用 hadoop 是很浪費空間的。所以修改一下把它改成 64MB 的 size。 ---- 先觀看 hdfs 的 datanode 狀況 ---- # 也可以用 web 看 http://localhost:50070/dfshealth.html#tab-datanode  # 用指令看 [hadoop@hnamenode ~]$ hdfs dfsadmin -report Configured Capacity: 64280172384256 (58.46 TB) Present Capacity: 64247015936000 (58.43 TB) DFS Remaining: 64238110507008 (58.42 TB) DFS Used: 8905428992 (8.29 GB) DFS Used%: 0.01% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 Missing blocks (with replication factor 1): 0 ------------------------------------------------- Live datanodes (17): Name: 192.168.1.11:50010 (hdatanode11.cm.nsysu.edu.tw) Hostname: hdatanode11.cm.nsysu.edu.tw Decommission Status : Normal Configured Capacity: 3998832504832 (3.64 TB) DFS Used: 407236608 (388.37 MB) Non DFS Used: 745283584 (710.76 MB) DFS Remaining: 3997679984640 (3.64 TB) DFS Used%: 0.01% DFS Remaining%: 99.97% Configured Cache Capacity...

大量安裝 Oracle Java 在 CentOS Linux 7 上

圖片
---- JAVA 單機安裝方式 ---- 首先要去官方網站上抓下來,放到 linux 上面。 http://www.oracle.com/technetwork/java/javase/downloads/index.html 這裡是以 centos7 x86_64 的版本的 rpm 為範例 http://www.oracle.com/technetwork/java/javase/downloads/index.html # 安裝 oracle java [hadoop@hnamenode2 dl]$ sudo yum install jdk-8u51-linux-x64.rpm # 設定使用那個 java 當成預設值 [hadoop@hnamenode2 dl]$ sudo alternatives --config java There are 2 programs which provide 'java'.   Selection    Command ----------------------------------------------- *+ 1           /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85-2.6.1.2.el7_1.x86_64/jre/bin/java    2           /usr/java/jdk1.8.0_51/jre/bin/java Enter to keep the current selection[+], or type selection number: 2 # 建議把 openjdk 移除,因為 hadoop 只要用 oracle jdk 就好,避免後續變數的錯亂。 # 移除後上面的 alternatives --config java 就會只剩下一個選項。 [hadoop@hnamenode2 dl]$ rpm -qa | grep openjdk java-1.7.0-openjdk-1.7.0.85-2.6.1.2.el7_1.x86_64 ja...

設定 ssh 使用 key 認證方式登入 linux 系統

目的為設定從 hnamenode 登入 hnamenode2 無須使用密碼登入 # ssh key 認證, 還沒產生 key 前的畫面 [hadoop@hnamenode ~]$ ls .ssh/ known_hosts # 產生一對 ssh key [hadoop@hnamenode ~]$ ssh-keygen  Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Enter passphrase (empty for no passphrase): (這是key的密碼) Enter same passphrase again: (這是key的密碼,check again) Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: cf:d3:df:a5:cb:ae:75:b9:09:59:51:e8:c2:ff:45:33 hadoop@hnamenode2 The key's randomart image is: +--[ RSA 2048]----+ |               ..| |              . .| |           . . . | |            o .Eo| |        S    o oo| |         o .  + o| |         ...