雲端運算DIY系列【1】:單節點版 Hadoop on CentOS5

多虧internet, 開放源碼以及虛擬化技術,要玩個小規模的雲端運算,自建平台,只要花點時間研究一下英文文件就可以。等玩出興趣了,也有實際應用需求了,隨時就可上手將服務雲端化。 在台灣,除了自己玩,也可以參與CloudTW雲端運算社群。可以加入社群的討論區或Facebook粉絲專頁,跟著社群成長,參與聚會(剛好11/17有第四次的社群meetup活動)或討論增廣見聞,交流心得新知。
評論
評論

前言

有想玩自建雲端雲算平台,並開始踏出第一步嗎?多虧 internet, 開放源碼以及虛擬化技術,要玩個小規模的雲端運算,自建平台,只要花點時間研究一下英文文件就可以。等玩出興趣了,也有實際應用需求了,隨時就可上手將服務雲端化。

在台灣,除了自己玩,也可以參與

什麼是 Hadoop?

Hadoop 專案的目標是希望提供開放源碼的軟體,來建立穩定可擴充的分散式運算平台。

本文目標?

在一個 CentOS 5 的 Linux 系統上安裝 Hadoop 單節點版。初步了解相關使用。

參考資料

Hadoop Common 0.21 版 英文文件 + 安裝經驗

安裝步驟

第一步:準備 Linux 環境 + JDK

1. 安裝 CentOS5.5, 將軟體進行補丁更新。

2. 安裝 Sun JDK,在本練習中下載的是 jdk-6u22-linux-i586-rpm.bin,可上 Sun 官網找一模一樣的版本就可完整照著做。

# sh ./jdk-6u22-linux-i586-rpm.bin   //用 root

3. 確認系統用的是 SUN JDK

# java -version

CentOS 5 的預設 JAVA 套件是 Open JDK,所以執行上面這行後會出現

java version "1.6.0_17″
OpenJDK Runtime Environment (IcedTea6 1.7.5) (rhel-1.16.b17.el5-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

如果系統目前預設 OpenJDK,用以下步驟換成‭ ‬SUN JDK

‭#‬‭ ‬alternatives‭ --‬install‭ /‬usr/bin/java java‭ /‬usr/java/jdk1.6.0‭_‬22‭/‬bin/java 20000
‭# ‬alternatives‭ --‬install‭ /‬usr/bin/javaws javaws‭ /‬usr/java/jdk1.6.0‭_‬22‭/‬bin/javaws 20000
‭# ‬alternatives‭ --‬install‭ /‬usr/bin/javac‭  ‬javac‭ /‬usr/java/jdk1.6.0‭_‬22‭/‬bin/javac 20000
‭# ‬alternatives‭ --‬config java

有‭ ‬3‭ ‬程式提供‭ ‘‬java‭'‬。

‭  ‬選擇‭        ‬指令
-----------------------------------------------
‭ + ‬1‭           /‬usr/lib/jvm/jre-1.6.0-openjdk.x86‭_‬64‭/‬bin/java
‭   ‬2‭           /‬usr/lib/jvm/jre-1.4.2-gcj/bin/java
‭*  ‬3‭           /‬usr/java/jdk1.6.0‭_‬22‭/‬bin/java

請輸入以保留目前的選擇‭[+]‬,或輸入選擇號碼‭:‬3

做到現在,系統預設的 JDK 就變成 Sun 的 JDK,檢查一下:

‭# ‬java‭ -‬version
java version‭ "‬1.6.0‭_‬22‭"‬
Java‭(‬TM‭) ‬SE Runtime Environment‭ (‬build 1.6.0‭_‬22-b04‭)‬
Java HotSpot(TM‭) ‬Client VM‭ (‬build 17.1-b03‭, ‬mixed mode‭, ‬sharing‭)‬
‭#‬javac‭ -‬version
javac 1.6.0‭_‬22


第二步:單機版 Hadoop 安裝

0‭.‬    建立 hadoop 這個使用者

‭# ‬useradd hadoop
‭# ‬passwd hadoop

接下來的操作都用 hadoop 個使用者來做。

‭# ‬su‭ -- ‬hadoop

1‭.‬    下載 Hadoop 0.21

‭# ‬wget‭ ‬http‭://‬ftp.tcc.edu.tw/pub/Apache‭//‬hadoop/core/hadoop-0.21.0‭/‬hadoop-0.21.0‭.‬tar.gz

2‭.‬    解開並作初步修改後安裝

‭#‬ tar xvzf‭ ‬hadoop-0.21.0‭.‬tar.gz
‭# ‬cd hadoop-0.21.0
‭# ‬vi‭ ‬conf/hadoop-env.sh

vi 打開 haddop-env.sh 後,找到底下這行,在後面添加 JAVA_HOME 的位置

‭# ‬The java implementation to use‭.  ‬Required‭.‬
‭# ‬export JAVA_HOME‭=/‬usr/lib/j2sdk1.6-sun
export JAVA_HOME‭=/‬usr/java/jdk1.6.0‭_‬22

這樣,已經完成了 Hadoop 的安裝!

3. 測試 Hadoop 安裝是否正確

# bin/hadoop
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
fs                   run a generic filesystem user client
version              print the version
jar <jar>            run a jar file
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath            prints the class path needed to get the
Hadoop jar and the required libraries
daemonlog            get/set the log level for each daemon
or
CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.

看到 hadoop 這個指令怎麼使用的英文說明如上,代表可以使用了!

4. 單機操作模式

Hadoop 預設是單機就可執行的 JAVA 應用程式。通常用來作為測試除蟲用。我們先來執行看看:

以 Hadoop 官網上的例子:我們想查看某個目錄裡面的 xml 檔案內容中,是不是有 dfz 開頭的字存在,如果有,就找出來。假如那個目錄裡面有百萬個 xml 檔案,這樣的工作用一台電腦找就會很辛苦,但是我們有 Hadoop,這件事情就可以分散到很多機器上去執行,再蒐集結果回來。

不過,這裡只是做個試驗,因此我們把 conf/這個目錄裡的 xml 檔案當做要找的問題,複製到 input/目錄中,並把結果放在 output/目錄裡。

# mkdir input

# cp  conf/*.xml input

# bin/hadoop jar hadoop-mapred-examples-0.21.0.jar  grep input output ‘dfs[a-z.]+'

執行上述行,接下來螢幕會跑出非常多的訊息,看起來電腦跑的很忙,真令人高興。執行完了看結果,果然找到一個字 -- dfsadmin,出現一次。

# cat output/*
1       dfsadmin

我們用 Linux 上的 grep 指令來驗證一下,果然在 hadoop-policy.xml 中有看到 dfsadmin 這個字。

# grep dfs input/*
input/hadoop-policy.xml:    dfsadmin and mradmin commands to refresh the security policy in-effect.

5. 單節點分散式操作

剛剛做的是用單一個 java 執行程序來跑這個問題,基本上跟 grep 做的方法差不多,是傳統的 Unix process,沒有分散運算。

這小節要用到 Hadoop 的分散特性,在單台電腦節點上做模擬分散運算的作法,讓每個 Hadoop 的守護進程 (daemon) 各自跑一個 java process 起來,各司其職。

我們先把結果照做出來,相關名詞後續文章會進行介紹解釋。

5.1 修改 Hadoop 設定檔:

# vi conf/core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

# vi conf/hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

# vi conf/mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

5.2 設定 SSH 無密碼連接

# ssh-keygen -t dsa -P " -f ~/.ssh/id_dsa
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

# chmod 400  ~/.ssh/authorized_keys

現在你應該可以直接連接 SSH,不需要敲密碼了,試試看。

# ssh localhost

5.3 格式化分散式檔案系統,很酷吧。

英文文件說要執行 bin/hadoop namenode -format

不過,在這一版的 hadoop 裡,如果用上述指令,你會發現下面這行訊息:

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

照他的意思,我們就改用 hdfs 這個指令來做格式化。不過,可能是因為 script 寫的不完整,他找不到 HADOOP_HOME 這個環境變數,所以我們得依照自己安裝的環境設定一下這個環境變數。以我的環境為例,我把 HADOOP 解壓縮在/home/hadoop/hadoop-0.21.0:

# export HADOOP_HOME=/home/hadoop/hadoop-0.21.0

# bin/hdfs namenode -format

格式化完之後,系統會建立/tmp/hadoop-hadoop/dfs 的目錄。

注意,如果 hadoop 已經在執行運算了,千萬不要執行格式化的指令,免得把資料刪除了。

5.4 啟動 hadoop daemons:

官方文件上寫說執行 bin/start-all.sh,不過看起來也是要 Deprecated 了。因此執行底下的指令:

# bin/start-dfs.sh
starting namenode, logging to /home/hadoop/hadoop-0.21.0/bin/../logs/hadoop-hadoop-namenode-localhost.localdomain.out
localhost: starting datanode, logging to /home/hadoop/hadoop-0.21.0/bin/../logs/hadoop-hadoop-datanode-localhost.localdomain.out
localhost: starting secondarynamenode, logging to /home/hadoop/hadoop-0.21.0/bin/../logs/hadoop-hadoop-secondarynamenode-localhost.localdomain.out

# bin/start-mapred.sh
starting jobtracker, logging to /home/hadoop/hadoop-0.21.0/bin/../logs/hadoop-hadoop-jobtracker-localhost.localdomain.out
localhost: starting tasktracker, logging to /home/hadoop/hadoop-0.21.0/bin/../logs/hadoop-hadoop-tasktracker-localhost.localdomain.out

啟動完成了,看一下帶起來的 Hadoop daemons 吧:

先用 root 把 Firewall 關掉:

# /etc/init.d/iptables stop

若是用本機的 Xwindows 上的 Firefox 看,只需要指向 localhost:

http://localhost:50070/

看到 NameNode 的狀態

http://localhost:50030/

看到 JobTracker 的狀態

看起來真是有模有樣了~

5.5 執行先前單機版跑的搜尋 dfs 開頭關鍵字的那個問題:

# bin/hadoop fs -put conf input

# bin/hadoop jar hadoop-mapred-examples-0.21.0.jar grep input output ‘dfs[a-z.]+'

接下來,你會看到終端機上吐出一大堆的訊息。執行了很久,終於回到系統提示符號。同一時間,可用 browser 連上 NameNode 與 JobTracker 看目前執行狀態。

跑完了的話來看結果(當然還是一樣!):

# cat output/*

1       dfsadmin

你會發現,用雲端運算跑的速度簡直是比單機跑的速度要慢上一大截!這是因為我們只用了一個節點做運算,而他把問題用 Map/Reduce 的方式來執行,多出了一些功夫,整體花費時間就長了。不過,這個架構才能擴充到數十數百數千台運算節點,先從單節點練習起,多節點的時候才好上手。

5.6 本文的單節點安裝與練習到此結束,停掉 hadoop 服務:

# bin/stop-dfs.sh

# bin/stop-mapred.sh

本文小結

以上內容,應該可了解:

1. 台灣的 Cloud 社群加入方式。

2. Hadoop 的基本概念。

3. 安裝好一個單節點的 Hadoop 系統。

若有相關問題,請用留言系統回覆或溝通。謝謝。


真無線藍牙耳機迎來個人化新時代!台灣聲學品牌 XROUND 打造個人化聽感及社群分享功能

近年來,真無線藍牙耳機的市場不斷推陳出新,各家耳機品牌除了提升耳機本身的硬體規格外,也逐步完善耳機專屬 APP 的功能性,讓產品使用體驗更加完美。
評論
評論

台灣聲學品牌 XROUND 在 2020 年就推出品牌無線耳機專用的 「 MyTune APP 」,讓使用者能夠自由調整 EQ 聽感設定,在不同的聆聽情境下都能擁有最優質的聽覺享受。

2021 年,XROUND 更在 APP 中增加了兩大功能:「 TailorID 」以及 「 EQ Sharing 」,除了能透過聽感測量,讓聽感更加個人化,還可在 APP 中與他人分享。未來品牌將邀請知名專業音樂人使用 MyTune APP ,讓聽感從個人擴及到社群,邀請同好一起交流。

XROUND 專屬 APP 的獨家 TailorID 聽感量測功能

每個人的聽覺,在不同頻段的聲響接受程度都不一樣,但一副耳機未進行客製優化前,在不同頻段的響應程度都是一樣的,因此無法讓每個人都有最佳的聽覺體驗。TailorID 功能只需要 3 分鐘,就能量測最適合自己的個人化聽感。

量測個人化聽感,只需要 3 分鐘就能完成。Photo Credit:XROUND
量測個人化聽感,只需要 3 分鐘就能完成。Photo Credit:XROUND

TailorID 功能會針對使用者的左右耳分別進行各頻段的聽感量測,讓使用者依照實際聽到的狀況回覆並記錄。量測完成後,就有一組使用者的專屬 EQ 配置,在播放示範音樂時,使用者再確認是否喜歡這樣的聽感。如果不喜歡,也能再自己手動調整。

TailorID 功能將會依照左右耳分別進行聽感量測。Photo Credit: XROUND

EQ 設定完成後,便會成為 APP 主畫面中的一組 EQ 設定,使用者還可繼續針對其他音樂類型再設定不同的個人化 EQ ,在聆聽時選擇使用。

使用者能夠針對不同音樂類型,設定不同的聽感。Photo Credit:XROUND

和專業音樂名人使用同樣的聽感,全新社群化 EQ Sharing 功能

XROUND 的 MyTune APP 除了可以量身客製自己的 EQ 聽感外,更可以利用「 EQ Sharing 」功能,在 APP 上和其他使用者分享聽感。

在設定好個人化 EQ 後,就能生成 QR Code 及代碼分享,與音樂同好或是親朋好友分享,也可以在社群平台和其他人交流討論。

XROUND 將舉辦 EQ 分享活動「XROUND EQ Sharing #讓你試試我的聽感」,邀請使用者在線上透過 QR Code 截圖分享自己的 EQ 設定。想知道各式聆聽情境下,不同人會有什麼樣的設定,歡迎至活動頁面了解詳情

Photo Credit:XROUND
使用者可以分享自己的聽感給好友,也能在社群上發文討論。Photo Credit:XROUND

未來 XROUND 將邀請各方藝人、專業音樂人來使用 MyTune APP,分享自己設定的專屬聽感,讓歌迷粉絲能夠與偶像擁有同樣專業級的聆聽感受。

正式迎來新時代!聆聽體驗不僅個人化,還能跟好友一起分享同樂

身為台灣在地品牌的 XROUND,不僅在耳機硬體上不斷追求進步,更在 APP 軟體上突破界限,讓真無線耳機的聽覺感受更加個人化,讓每個人都擁有最佳的聆聽體驗。

透過 TailorID 功能,設定個人化的 EQ 聽感,不需花大錢也能擁有完全客製的聽覺饗宴;而 EQ Sharing 能夠和好友分享,還能體驗到專業音樂人的聽感,讓音樂體驗更加豐富有趣。 XROUND 在真無線耳機的紅海中,帶給消費者更完整的功能,給人耳目一新的感受。

本文章內容由「 XROUND 」提供,經關鍵評論網媒體集團廣編企劃編審。