Ubuntu:
一、安裝JAVA。
首先安裝java。因為Ubuntu裡面預設安裝了OpenJDK,可以先將其卸載。在終端輸入命令:sudo apt-get purge openjdk*。
1、從sun首頁下載JDK for linux 版本。我下載的是jdk-6u37-linux-i586.bin。:點擊開啟
2、切換到root使用者並切換到想要安裝的目錄。我的安裝目錄為/usr/lib/jvm/java。將下載的檔案拷貝到此目錄中。並使用命令:chmod a+x jdk-6u37-linux-i586.bin將此檔案使用權限設定為可執行類型。
3、開始安裝。在終端輸入:./jdk-6u37-linux-i586.bin,接下來會進行安裝過程。安裝過程中會提示按Enter鍵繼續。
4、安裝完成後,會出現Done。表示完成了java環境的安裝。安裝的位置為目前的目錄/usr/java。當然,也可以選擇其他的位置。
5、安裝完成後,直接在終端輸入java會出錯。此時還需要配置環境變數。如果只使用export命令則支隊當前shell起作用。如果切換shell或重啟則依舊會失效。可以選擇配置.bashr檔案或/etc/profile,後者修改系統設定檔,對所有使用者均有效。
6、使用vim開啟/etc/profile檔案。在末尾添加如下內容:
export JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_37export JRE_HOME=/usr/lib/jvm/java/jdk1.6.0_37/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
(註:注意一定不要錯誤,否則有可能重啟後無法進入系統,如果由於輸入錯誤,導致開機之後只有空白的介面,按ctrl+Alt+F1進入tty1命令列介面,輸入命令:sudo vim /etc/profile 檢查剛剛的配置是否有錯誤的地方,改正後重啟即可。注意export命令=兩邊沒有空格。)
7、儲存後重新啟動電腦。
(註:網上有資料說可以使用source更新一下。在終端輸入命令:source /etc/profile。經本人測試,這種方法會導致只在一個終端中有效,如果開啟新的終端會java配置會失效,除非再次使用source命令更新。)
8、使用env命令查看各環境變數的值。如果各項變數內容都與之前配置的相同,則說明配置成功。也可使用java -version命令察看。如果能輸出java version "1.6.0_37"則表明配置正確。
二、建立Hadoop組和Hadoop使用者。
1、建立hadoop使用者組:sudo addgroup hadoop
2、建立hadoop使用者:sudo adduser -ingroup hadoop hadoopusr。過程中會要求你輸入密碼和使用者資訊。輸入使用者資訊的時候,可直接點Enter(表示預設)。最後輸入y。
3、給剛建立的hadoop使用者hadoopusr添加許可權,開啟/etc/sudoers檔案。輸入命令:sudo gedit /etc/sudoers。給hadoopusr賦予root使用者同樣的許可權。在檔案末尾添加如下資訊:
root ALL=(ALL:ALL) ALLhadoopusr ALL=(ALL:ALL) ALL
三、安裝ssh服務
ssh可以實現遠程登入和管理,具體可以參考其他相關資料。
輸入命令:sudo apt-get install ssh openssh-server,安裝openssh-server。
如果你已經安裝好了ssh,可以直接進行下一步。
四、建立ssh無密碼登入本機
首先要轉換成hadoop使用者,執行以下命令:su - hadoopusr,再輸入密碼即可。
ssh產生密鑰有rsa和dsa兩種產生方式,預設情況下採用rsa方式。
1、建立ssh-key,我們採用rsa方式。輸入命令:ssh-keygen -t rsa -P ""
輸入命令後會出現提示資訊:“Enter file in which to save the key (/home/hadoopusr/.ssh/id_rsa):”,直接點斷行符號即可。出現如下資訊:
Created directory '/home/hadoopusr/.ssh'.Your identification has been saved in /home/hadoopusr/.ssh/id_rsa.Your public key has been saved in /home/hadoopusr/.ssh/id_rsa.pub.The key fingerprint is:d4:29:00:6e:20:f0:d9:c6:a2:9b:cd:22:60:44:af:eb hadoopusr@shan-pcThe key's randomart image is:+--[ RSA 2048]----+|+.. ... ||.o.* . . . || .+.* o o ||...+ . . ||oo S ||o=. ||=.o ||o. || E |+-----------------+
(註:斷行符號後會在~/.ssh/下產生兩個檔案:id_rsa和id_rsa.pub。這兩個檔案是成對出現的。)
2、進入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys授權檔案中,開始沒有authorized_keys檔案。執行命令:
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
完成後即可無密碼登入本機。
3、登入localhost。在終端輸入命令:ssh localhost
(註:當ssh遠程登入到其它機器後,你控制的是遠端機器,需要執行退出命令才能重新控制本地主機。)
4、執行退出命令。輸入命令:exit
五、安裝Hadoop。
在Hadoop官網下載Hadoop。本次使用的版本為1.1.0。在官網下載hadoop-1.1.0.tar.gz。(註:使用非root使用者):點擊開啟
1、假設hadoop-1.1.0.tar.gz在案頭,將它複製到安裝目錄 /usr/local/下。執行命令:sudo cp hadoop-0.20.203.0rc1.tar.gz /usr/local/
2、解壓hadoop-1.1.0.tar.gz。執行命令:
cd /usr/local
sudo tar -zxf hadoop-1.1.0.tar.gz
3、將解壓出的檔案夾改名為hadoop。執行命令:sudo mv hadoop-1.1.0 hadoop
4、將該hadoop檔案夾的屬主使用者設為hadoopusr。執行命令:sudo chown -R hadoopusr:hadoop hadoop
5、開啟hadoop/conf/hadoop-env.sh檔案。執行命令:sudo gedit hadoop/conf/hadoop-env.sh
6、配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然後加上本機jdk的路徑):export JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_37
7、開啟conf/core-site.xml檔案。輸入命令sudo gedit hadoop/conf/core-site.xml,修改為:(註:如果直接複製此處代碼,會有行號。請去掉行號。下同。)
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property></configuration>
8. 開啟conf/mapred-site.xml檔案。輸入命令:sudo gedit hadoop/conf/mapred-site.xml,修改為:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property></configuration>
9. 開啟conf/hdfs-site.xml檔案。輸入命令:sudo gedit hadoop/conf/hdfs-site.xml,修改為:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration> <property> <name>dfs.name.dir</name> <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
10. 開啟conf/masters檔案,添加作為secondarynamenode的主機名稱,作為單機版環境,這裡只需填寫 localhost 就Ok了。sudo gedit hadoop/conf/masters
11. 開啟conf/slaves檔案,添加作為slave的主機名稱,一行一個。作為單機版,這裡也只需填寫 localhost就Ok了。sudo gedit hadoop/conf/slaves
六、在單機上運行hadoop
1. 進入hadoop目錄下,格式化hdfs檔案系統,初次運行hadoop時一定要有該操作,
cd /usr/local/hadoop/
bin/hadoop namenode -format
2. 當你看到如下資訊時,就說明你的hdfs檔案系統格式化成功了。
******************省略資訊**********************************/12/11/19 14:13:14 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/usr/local/hadoop/datalog2/current/edits12/11/19 14:13:14 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/usr/local/hadoop/datalog2/current/edits12/11/19 14:13:14 INFO common.Storage: Storage directory /usr/local/hadoop/datalog2 has been successfully formatted.12/11/19 14:13:14 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************SHUTDOWN_MSG: Shutting down NameNode at shan-pc/127.0.1.1************************************************************/
3、啟動bin/start-all.sh。輸入命令:bin/start-all.sh
4、檢測hadoop是否啟動成功。輸入命令:jps
如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五個進程,就說明你的hadoop單機版環境已經配置完成。
OK,一個hadoop的單機版環境已經搭建完成~接下來我們運行一個執行個體測試一下~
七、測試
1、進入hadoop目錄下(cd /usr/local/hadoop),輸入啟動命令:bin/start-all.sh。啟動hadoop。
2、輸入如下命令執行wordcount程式計算過程:
echo "hello world" > /home/hadoopusr/file01
echo "hello hadoop" > /home/hadoopusr/file02
bin/hadoop fs -mkdir input
bin/hadoop fs -copyFromLocal /home/hadoopusr/file0* input
bin/hadoop jar hadoop-examples-1.1.0.jar wordcount input output
hadoopusr@shan-pc:/usr/local/hadoop$ echo "hello world" > /home/hadoopusr/file01hadoopusr@shan-pc:/usr/local/hadoop$ echo "hello hadoop" > /home/hadoopusr/file02hadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -mkdir inputhadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -copyFromLocal /home/hadoopusr/file0* inputhadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop jar hadoop-examples-1.1.0.jar wordcount input output12/11/19 15:34:15 INFO input.FileInputFormat: Total input paths to process : 212/11/19 15:34:15 INFO util.NativeCodeLoader: Loaded the native-hadoop library12/11/19 15:34:15 WARN snappy.LoadSnappy: Snappy native library not loaded12/11/19 15:34:15 INFO mapred.JobClient: Running job: job_201211191500_000612/11/19 15:34:16 INFO mapred.JobClient: map 0% reduce 0%12/11/19 15:34:21 INFO mapred.JobClient: map 100% reduce 0%12/11/19 15:34:29 INFO mapred.JobClient: map 100% reduce 33%12/11/19 15:34:30 INFO mapred.JobClient: map 100% reduce 100%12/11/19 15:34:31 INFO mapred.JobClient: Job complete: job_201211191500_000612/11/19 15:34:31 INFO mapred.JobClient: Counters: 2912/11/19 15:34:31 INFO mapred.JobClient: Job Counters 12/11/19 15:34:31 INFO mapred.JobClient: Launched reduce tasks=112/11/19 15:34:31 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=752012/11/19 15:34:31 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=012/11/19 15:34:31 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=012/11/19 15:34:31 INFO mapred.JobClient: Launched map tasks=212/11/19 15:34:31 INFO mapred.JobClient: Data-local map tasks=212/11/19 15:34:31 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=940612/11/19 15:34:31 INFO mapred.JobClient: File Output Format Counters 12/11/19 15:34:31 INFO mapred.JobClient: Bytes Written=2512/11/19 15:34:31 INFO mapred.JobClient: FileSystemCounters12/11/19 15:34:31 INFO mapred.JobClient: FILE_BYTES_READ=5512/11/19 15:34:31 INFO mapred.JobClient: HDFS_BYTES_READ=25312/11/19 15:34:31 INFO mapred.JobClient: FILE_BYTES_WRITTEN=7188412/11/19 15:34:31 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=2512/11/19 15:34:31 INFO mapred.JobClient: File Input Format Counters 12/11/19 15:34:31 INFO mapred.JobClient: Bytes Read=2512/11/19 15:34:31 INFO mapred.JobClient: Map-Reduce Framework12/11/19 15:34:31 INFO mapred.JobClient: Map output materialized bytes=6112/11/19 15:34:31 INFO mapred.JobClient: Map input records=212/11/19 15:34:31 INFO mapred.JobClient: Reduce shuffle bytes=6112/11/19 15:34:31 INFO mapred.JobClient: Spilled Records=812/11/19 15:34:31 INFO mapred.JobClient: Map output bytes=4112/11/19 15:34:31 INFO mapred.JobClient: CPU time spent (ms)=125012/11/19 15:34:31 INFO mapred.JobClient: Total committed heap usage (bytes)=33633894412/11/19 15:34:31 INFO mapred.JobClient: Combine input records=412/11/19 15:34:31 INFO mapred.JobClient: SPLIT_RAW_BYTES=22812/11/19 15:34:31 INFO mapred.JobClient: Reduce input records=412/11/19 15:34:31 INFO mapred.JobClient: Reduce input groups=312/11/19 15:34:31 INFO mapred.JobClient: Combine output records=412/11/19 15:34:31 INFO mapred.JobClient: Physical memory (bytes) snapshot=32619724812/11/19 15:34:31 INFO mapred.JobClient: Reduce output records=312/11/19 15:34:31 INFO mapred.JobClient: Virtual memory (bytes) snapshot=112887398412/11/19 15:34:31 INFO mapred.JobClient: Map output records=4
3、wordcount程式執行完畢,運行命令bin/hadoop fs -ls output。查看輸出結果。如下:
hadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -ls outputFound 3 items-rw-r--r-- 2 hadoopusr supergroup 0 2012-11-19 15:34 /user/hadoopusr/output/_SUCCESSdrwxr-xr-x - hadoopusr supergroup 0 2012-11-19 15:34 /user/hadoopusr/output/_logs-rw-r--r-- 2 hadoopusr supergroup 25 2012-11-19 15:34 /user/hadoopusr/output/part-r-00000
4、輸入命令bin/hadoop fs -cat /user/hadoopusr/output/part-r-00000查看最後統計結果。結果如下:
hadoopusr@shan-pc:/usr/local/hadoop$ bin/hadoop fs -cat /user/hadoopusr/output/part-r-00000hadoop1hello2world1
轉載請註明出處:http://blog.csdn.net/iAm333