在windows下安裝hadoop

本博文徹底引用於http://blog.csdn.net/nazarite_wen/article/details/34409923。防止引用博文被刪除,從新copy一遍。html

Windows下運行Hadoop,一般有兩種方式:一種是用VM方式安裝一個Linux操做系統,這樣基本能夠實現全Linux環境的Hadoop運行;另外一種是經過Cygwin模擬Linux環境。後者的好處是使用比較方便,安裝過程也簡單。在這裏我們就來看看第二種方案:如何再Windows下快速安裝一個Hadoop環境,並結合Eclipse開發環境研究和調整Hadoop代碼。java

整個安裝過程包括如下三大步驟:node

  1. 安裝和配置Cygwin(http://cygwin.com/install.html)
  2. 安裝和配置Hadoop-1.2.1(http://hadoop.apache.org/docs/stable/cluster_setup.html)
  3. 安裝和配置Eclipse開發環境

1安裝和配置Cygwin

在Windows下經過安裝Cygwin模擬Linux環境,而後再安裝Hadoop,是一種簡單方便的方式,爲Hadoop準備的模擬Linux環境安裝過程以下:web

1.1下載安裝文件

針對不一樣系統類型下載相應的安裝文件,下載地址:http://cygwin.com/install.htmlapache

我這裏的系統是window 7因此下載的是setup-x86.exewindows

1.2安裝Cygwin

剛剛下載的文件是模擬Linux系統所依賴的軟件包下載和管理工具,之後想要在模擬Linux環境中安裝或更新軟件都須要經過這個工具來完成,下面咱們就先運行起來這個工具以下:瀏覽器

  1. 左鍵雙擊setup-x86.exe文件運行安裝嚮導:
cygwin安裝

cygwin安裝bash

  1. 點擊【下一步】按鈕進入程序引導安裝頁,這裏有三個選項,選擇第一項網絡安裝:
    • 網絡安裝:經過網絡下載並安裝軟件包
    • 下載但不安裝:經過網絡下載軟件包
    • 本地安裝:是用本地軟件包安裝
cygwin安裝

cygwin安裝服務器

  1. 點擊【下一步】進入選擇模擬Linux系統的根目錄和用戶的嚮導頁。在Linux的文件系統中有且只有一個根目錄,在這裏選擇目錄就是Linux中的那個根目錄了,這裏選擇默認:c:\cygwin;用戶選擇第一項:本系統的全部有效用戶。
cygwin安裝

cygwin安裝網絡

  1. 點擊【下一步】選擇本地軟件包目錄,該工具會自動記住並將之後下載的全部軟件包都會放到這裏指定的目錄。我這裏選擇:C:\Users\Administrator\Desktop\1,若是選擇不存在目錄,就好提示是否建立目錄選Yes就OK。
cygwin安裝

cygwin安裝

  1. 點擊【下一步】選擇您的網絡鏈接,我這裏使用的是代理服務器上網,因此我選擇第二項:使用IE瀏覽器代理設置。經測試選擇第三項輸入代理服務器地址和端口,不能正常訪問網絡,緣由不明。
cygwin安裝

cygwin安裝

  1. 點擊【下一步】,等待下載鏡像站點列表,下載完成後出現選擇下載軟件包的站點。如圖:
cygwin安裝

cygwin安裝

  1. 根據本身的狀況選擇合適的下載地址,我這裏選擇了國內的163站點,點擊【下一步】,這個工具就會自動下載軟件包信息列表下載完成後進入安裝軟件包選擇頁,以下圖:
cygwin安裝

cygwin安裝

  1. 這一步比較重要,如下軟件包要確保被安裝:
cygwin安裝

cygwin安裝

注:這個軟件包列表由前到後包括:分類、當前安裝版本,最新版本,安裝可執行文件?,安裝源代碼文件?,大小,包名稱和說明。

    • 基礎軟件包:Base及其下面的全部軟件包,操做方法:點擊Base後面的Default爲Install。
    • SSH相關軟件包:Net下的OpenSSL和和OpenSSH,用於Hadoop須要的SSH訪問,操做方法:點擊【+】展開Net節點,點擊各個軟件包前的最新版本號列的Keep爲版本號即爲選中安裝。
    • 其餘軟件包根據本身的須要選中是否安裝便可,我這裏還選中了Emacs、VIM、Perl、Python、Ruby、Science、subversion等經常使用工具。
  1. 選擇完軟件包點擊【下一步】,進入自動下載與安裝,以下圖:

     

    cygwin安裝

    cygwin安裝

  1. 點擊【下一步】進入嚮導結束頁,勾選建立桌面快捷方式點擊【完成便可】,如圖:

     

    cygwin安裝

    cygwin安裝

到這裏,您已經完成了模擬Linux環境的安裝,左鍵雙擊桌面上的圖標cygwin安裝打開這個模擬Linux的終端窗口輸入幾個經常使用Linux命令體驗下這個模擬的Linux系統吧,除了能夠執行Linux經常使用命令外,還能夠執行Windows的命令例如:net start service_name等。體驗完成後繼續下面的配置工做。

1.3配置Cygwin的SSH服務

Cygwin安裝完成後,須要先配置SSH服務,以知足Hadoop提出的SSH無密碼登入,過程以下:

打開模擬Linux的終端,進入Linux環境

執行命令:ssh-host-config如圖:

Hadoop安裝

Hadoop安裝

第一次詢問:「Should privilege separation be used? (yes/no)」,輸入no回車。

第二次詢問:「Do you want to install sshd a service?」,輸入yes回車。

第三次提示:「Enter the value of CYGWIN for the demon: []」,直接回車。

第四次詢問:「Do you want to use a different name? (yes/no)」,輸入no回車。

第五次提示:「Please enter the password for user ‘cyg_server’:」,輸入密碼回車,在此輸入密碼回車。

最後提示配置完成。

1.4啓動SSH服務

在Linux終端或Windows命令行執行net start sshd或命令cygrunsrv –S sshd啓動SSH服務。

測試ssh登入本機:

在終端執行命令:ssh localhost

提示輸入密碼:輸入密碼回車,以下圖:

Hadoop安裝

Hadoop安裝

 

1.5配置SSH免密碼登入

在終端執行命令:ssh-keygen -t dsa -P 」 -f ~/.ssh/id_dsa生成祕鑰。

執行命令:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys生成認證文件。

執行命令:ssh localhost測試是否無需輸入密碼便可登入。

Hadoop安裝

Hadoop安裝

1.6Cygwin使用積累

1.6.1在cygwin裏訪問Windows盤

cd /cygdrive/c

1.6.2整合cygwin命令到Windows中

假設cygwin安裝在d:/develop/cygwin,則將d:/develop/cygwin/bin添加到系統變量PATH中(最好加在windows前面,這樣的話,有些相同的命令的話,是先執行cygwin的命令,而不是windows命令,好比find)。

添加完後就能夠直接在cmd.exe下面執行tar czvf xxx.tgz ./

基本上全部的命令均可以用了,包括ls,more,less,find,grep等。

1.6.3使用TGZ備份

將cygwin的BIN加入到PATH

建一個BAT文件:

@echo off

d:

cd d:/website/8thmanage

tar czvf 8thmanage.tgz 8thmanage

1.6.4Windows使用SHELL腳本

將cygwin的BIN加入到PATH

在$CYGWIN的目錄/var/下面建一腳本t.sh,注意,t.sh裏面的路徑,都是相對於$CYGWIN的,裏面須要訪問C盤的,請用/cygdrive/c/

在Windows下執行:

d:/cygwin/bin/bash d:/cygwin/var/t.sh

(能夠按期執行)

1.6.5同步Windows系統用戶

mkpasswd -l > /etc/passwd

mkgroup -l > /etc/group

若是有Domain的話,須要加上-d domainname

1.6.6安裝系統服務

cygrunsrv

1.6.7cygwing下使用rsync

  1. 安裝rsync組件
  2. 進入cygwin,配置服務器

vi /etc/rsyncd.conf

…screts file=/etc/tom.ipaddr.pas

配置文件,參考我寫的另一篇rsync的文章,注意:密碼文件權限必須是0400

chmod 0400 /etc/tom.ipaddr.pas

  1. 啓動服務端

rsync –daemon

  1. 客戶端同步

在客戶端的cygwin下面,運行rsync同步,具體命令,請參考另一篇rsync的文章。

1.6.8cygwin下使用SSHD

  1. 須要安裝了cygrunsrc,openssh
  2. 運行ssh-host-config -y

一路回車,直到出現CYGWIN=時,輸入tty ntsec,再回車,

(或者,增長一系統環境變量CUGWIN=nesec tty)

  1. 已經安裝好SSHD服務到你的Windows服務中,能夠直接在服務中啓動,關閉。

(cygrunsrc -S sshd或者net start sshd)

1.6.9中文顯示

vi ~/.bashrc

# 讓ls和dir命令顯示中文和顏色

alias ls=’ls –show-control-chars –color’

alias dir=’dir -N –color’

# 設置爲中文環境,使提示成爲中文

export LANG=」zh_CN.GBK」

# 輸出爲中文編碼

export OUTPUT_CHARSET=」GBK」

~/.inputrc爲

set completion-ignore-case on

set meta-flag on

set output-meta. on

set convert-meta. off

cygwin.bat腳本爲:

@echo off

set MAKE_MODE=UNIX

2安裝和配置Hadoop-1.2.1

2.1安裝JDK

JDK下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

這裏要特別說明下,在Linux下路徑或命令是嚴格區分大小寫的而且對於帶空格的目錄,一概添加雙引號(「」)除了,因此建議將JDK直接放到一個盤的根目錄,而不是默認安裝的Program Files目錄。

我這裏沒有下載最新的JDK,在工做機中翻出來N久不用的32位Windows下的jdk1.6.0_14,直接將jdk1.6.0_14扔進C盤根目錄,而後再配置環境變量以下:

JAVA_HOME=c:\jdk1.6.0_14

PATH=%JAVA_HOME%\bin;… 注:在系統PATH中添加%JAVA_HOME%\bin;

打開Windows命令行輸入java –version,能夠正常執行就OK。

我曾經嘗試過不在Windows下配置Java的環境變量,Hadoop也是能夠正常運行的,由於咱們還會在Hadoop運行腳本中明確知道JAVA_HOME。

Hadoop安裝

Hadoop安裝

2.2下載最新穩定版Hadoop

下載地址:http://hadoop.apache.org/releases.html#Download

我下載的是最新穩定版:hadoop-1.2.1-bin.tar.gz

2.3規劃Hadoop目錄

在Hadoop生態圈裏,有各類各樣的工具,興許過些時候就會用的上,在加上Hadoop開發M/R、部署M/R,以及升級Hadoop等等等,由此看來有必要花點心思對Hadoop的安裝目錄規劃一番。

我安裝Hadoop的Windows是一個虛擬機,而且只建立了一個分區,因此hadoop文件夾就放在C盤的根目錄了。如下是個人目錄結構:

Hadoop安裝

Hadoop安裝

Hadoop在C盤的根目錄下,下面有code(存放代碼)、deploy(放hadoop及生態圈的安裝文件)、sysdata(存放dfs數據、SecondNameNode源數據以及運行期間的臨時文件存放目錄)。

將下載的hadoop-1.2.1-bin.tar.gz解壓到目錄c:\hadoop\deploy\hadoop-1.2.1

2.4添加Hadoop基本配置

Hadoop最完整的配置還得開官方文檔,我這裏只配置了一些基本的配置供參考:

注:由於個人hadoop安裝在C盤,因此如下XML配置文件中配置路徑的根都是C盤根目錄。例如:/hadoop/sysdata運行過程當中翻譯過來就是:c:\hadoop\sysdata。Shell腳本中配置路徑的根是虛擬Linux的根目錄/。例如:/cygdrive/c/jdk1.6.0_14指向:c:\jdk1.6.0_14。

2.4.1conf/hadoop-env.sh

添加JAVA_HOME:

export JAVA_HOME=/cygdrive/c/jdk1.6.0_14

2.4.2conf/core–site.xml

<?xml version=」1.0″?>

<?xml-stylesheet type=」text/xsl」 href=」configuration.xsl」?>

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://172.16.128.239:9001</value>

</property>

 

<property>

<name>hadoop.tmp.dir</name>

<value>/hadoop/sysdata/</value>

<description>A base for other temporary directories.</description>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>/hadoop/sysdata/namesecondary/</value>

</property>

 

<property>

<name>dfs.web.ugi</name>

<value>lg,lg</value>

</property>

 

<property>

<name>fs.checkpoint.period</name>

<value>3600</value>

<description>set to 1 hour by default, specifies the maximum delay between two consecutive checkpoints</description>

</property>

<property>

<name>fs.checkpoint.size</name>

<value>67108864</value>

<description>set to 64MB by default, defines the size of the edits log file that forces an urgent checkpoint even if the maximum checkpoint delay is not reached.</description>

</property>

</configuration>

2.4.3hdfs-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.permissions</name>

<value>false</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.datanode.max.xcievers</name>

<value>4096</value>

<description>

DataNode 同時處理文件的上限

</description>

</property>

<!–property>

<name>dfs.http.address</name>

<value>0.0.0.0:50070</value>

</property–>

</configuration>

2.4.4mapred-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>172.16.128.239:9002</value>

</property>

</configuration>

2.4.5masters

localhost

2.4.6slaves

localhost

2.5格式化NameNode

在以上配置文件完成後,咱們能夠開始對namenode進行格式化了,這是hadoop開始使用的第一步,就像咱們對硬盤進行格式化操做同樣。打開Cygwin終端執行如下命令:

cd /cygdrive/c/hadoop/deploy/hadoop-1.2.1/bin

./hadoop namenode –format

如圖:

Hadoop安裝

Hadoop安裝

2.6啓動測試Hadoop

格式化完NameNode後,咱們就能夠執行start-all.sh命令來啓動hadoop了。以下:

執行: ./start-all.sh

Hadoop安裝

Hadoop安裝

打開瀏覽器訪問HDFS監控界面

http://localhost:50070

Hadoop安裝

Hadoop安裝

2.8Hadoop使用積累

2.8.1訪問遠程NameNode節點:

./hadoop dfs -fs 172.16.128.239:9001 -ls /user/lg/event_videos/2013/09/

2.8.2HDFS的權限相關

  1. 超級用戶

超級用戶即運行name node進程的用戶。寬泛的講,若是你啓動了name node,你就是超級用戶。超級用戶幹任何事情,由於超級用戶可以經過全部的權限檢查。沒有永久記號保留誰過去是超級用戶;當name node開始運行時,進程自動判斷誰如今是超級用戶。HDFS的超級用戶不必定非得是name node主機上的超級用戶,也不須要全部的集羣的超級用戶都是一個。一樣的,在我的工做站上運行HDFS的實驗者,不需任何配置就已方便的成爲了他的部署實例的超級用戶。另外,管理員能夠用配置參數指定一組特定的用戶,若是作了設定,這個組的成員也會是超級用戶。

Web服務器用戶

Web服務器的身份是一個可配置參數。Name node並無真實用戶的概念,可是Web服務器表現地就像它具備管理員選定的用戶的身份(用戶名和組)同樣。除非這個選定的身份是超級用戶,不然會有名字空間中的一部分對Web服務器來講不可見。

  1. 配置參數

dfs.permissions = true

若是是true,打開權限檢查。若是是false,關閉權限檢查,可是其餘的行爲沒有改變。這個配置參數的改變並不改變文件或目錄的模式、全部者和組等信息。

無論權限模式是開仍是關,chmod,chgrp 和chown 老是會檢查權限。這些命令只有在權限檢查背景下才有用,因此不會有兼容性問題。這樣,這就能讓管理員在打開常規的權限檢查以前能夠可靠地設置文件的全部者和權限。

 

dfs.web.ugi = webuser,webgroup

Web服務器使用的用戶名。若是將這個參數設置爲超級用戶的名稱,則全部Web客戶就能夠看到全部的信息。若是將這個參數設置爲一個不使用的用戶,則Web客戶就只能訪問到「other」權限可訪問的資源了。額外的組能夠加在後面,造成一個用逗號分隔的列表。

 

dfs.permissions.supergroup = supergroup

超級用戶的組名。

 

dfs.upgrade.permission = 777

升級時的初始模式。文件永不會被設置x權限。在配置文件中,可使用十進制數51110。

 

dfs.umask = 022

umask參數在建立文件和目錄時使用。在配置文件中,可使用十進制數1810。

  1. 建立目錄時默認的用戶和組

建立目錄的所屬用戶默認爲當前建立者,即在類Unix系統中執行命令whoami所獲得的用戶名,所屬組爲上級目錄的組。

相關文章
相關標籤/搜索