Linux中單機配置Hadoop

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.