Hadoop2.5.2 64bit 完全分佈式安裝

Hadoop2.5.2 64bit 完全分佈式安裝

 

1.        安裝環境

Windows 7 64bit
VMware Workstation 10
CentOS6.5  64bit
jdk版本: jdk-7u9-linux-x64.tar.gz

hadoop版本: hadoop-2.5.2-src.tar.gz

 

hadoop集羣3個節點,一主兩從,如下:

角色

ip

用戶

運行進程

master

192.168.1.100

hadoop

JobHistoryServer,ResourceManager,

NameNode,NodeManager,DataNode,Main

Slave01

192.168.1.101

hadoop

NodeManager,DataNode

Slave02

192.168.1.102

hadoop

NodeManager,DataNode

 

1.  關閉防火牆

vi  /etc/selinux/config

在 SELINUX=enforcing 前面加個#號註釋掉它
#SELINUX=enforcing

然後新加一行SELINUX=disabled

保存,退出,重啓系統,就可以徹底關閉firewall了。

 

2.  修改IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0  

 #編輯配置文件,添加修改以下內容

BOOTPROTO=static  #啓用靜態IP地址

 ONBOOT=yes #開啓自動啓用網絡連接

 IPADDR=192.168.1.100  #設置IP地址

 NETMASK=255.255.255.0  #設置子網掩碼

 GATEWAY=192.168.1.1   #設置網關

 DNS1=8.8.8.8 #設置主DNS

 DNS2=192.168.1.1 #設置備DNS

 IPV6INIT=no #禁止IPV6

 :wq 保存。

 

下面的命令執行(可選)

service ip6tables stop   #停止IPV6服務

 chkconfig ip6tables off  #禁止IPV6開機啓動

 service yum-updatesd stop   #關閉系統自動更新

 chkconfig yum-updatesd off  #禁止開啓啓動

 service network restart  #重啓網絡連接

 

出現的問題:

Ø  網絡連接不上,重啓網絡後報以下的錯誤:沒有找到可用於連接’System eth0’的設備。

 

解決方法:

 

CentOS虛擬機中啓用不了eth0網卡解決辦法:

1./etc/udev/rules.d/70-persistent-net.rules 文件

刪除eth0網卡

將eth1網卡的NAME="eth1"修改爲"eth0",並複製ATTR{address}中的值(MAC地址)

 如: 00:0c:29:c3:bd:59

2./etc/sysconfig/network-scripts/ifcfg-eth0 文件

將複製的ATTR{address}值覆蓋#HWADDR

 

重啓服務:servicenetwork restart

 

注: 修改網卡名稱使用root用戶登錄,修改“/etc/udev/rules.d/70-persistent-net.rules”文件 --- (如果服務器沒有此文件就跳過)。如果是虛擬機,沒有此文件,就不用修改,主要是修改NAME="eth0"

 

三臺虛擬機有一臺不能上網:原因虛擬機上的ip與windows的ip相沖突了。(折騰了我一天呀,嗚嗚。)

注意:自己虛擬機上的ip不要與windows上的ip相沖突了,不然,虛擬機不能上網。

 

Ø  SSH連接centos 6.5 因超時而斷開(啓動的應用程序也會被終止)報以下錯誤信息:

 

解決方法:

在服務器端設置

如果有相應的權限,也可以在服務器端設置,即編輯/etc/ssh/sshd_config,並添加:

ClientAliveInterval60  (#此後該系統裏的用戶連接SSH時,每60秒會發一個KeepAlive請求,避免被踢。)

需要注意的是在服務器端設置後需要重啓該服務器以使連接生效sudo reboot

重啓後每一個連接到此服務器上的客戶端都會受其影響。另外應注意啓用該功能後,安全性會有一定下降(比如忘記登出時……

 

 

3.  設置機器hostname別名

設置別名的目的是機器間相互識別可以不用ip,配置文件中也可以不用ip,通用性上更強一些。

 

在 master 機器上面執行下面的命令:

# 當前ssh窗口即可生效

hostname master   

# 每次重啓以後均生效

vi /etc/sysconfig/network       

HOSTNAME=master

 

同樣,在 slave01 、slave02 機器上面執行相同的命令,只需要更改HOSTNAME的值:

如下:

HOSTNAME=slave01

HOSTNAME=slave02

添加Hosts映射關係,三臺機器上面分別都執行操作 vi /etc/hosts 添加如下內容,之後在每臺機器上面ping一下,確保能夠連接彼此。

 

192.168.1.100 master

192.168.1.101 slave01

192.168.1.102 slave02

 

 

4.  配置集羣之間SSH無密碼登陸

1、爲了hadoop集羣的安全與方便管理,我們要另外新建用戶,並設置密碼,命令如下:

# 創建賬號hadoop並賦予密碼hadoop

sudo adduser hadoop

sudo passwd hadoop

 

刪除用戶

userdel – r hadoop

2、給hadoop賬戶賦予root權限 vi/etc/sudoers 添加如下:

hadoop  ALL=(ALL)       ALL

這裏會報沒有權限修改一個可讀文件。

解決方法:

1.    修改/etc/sudoers文件,進入超級用戶,因爲沒有寫權限,所以要先把寫權限加上chmod u+w /etc/sudoers b. 編輯/etc/sudoers文件,找到這一行:"root ALL=(ALL) ALL"在起下面添加" hadoop  ALL=(ALL)       ALL "(這裏的hadoop  是你的用戶名),然後保存。 c. 最後恢復沒有寫權限模式,撤銷文件的寫權限,chmod u-w /etc/sudoers

 


3、配置集羣各個節點之間的ssh無密碼互信,也就是從master開始,ssh到master(localhost)、slave01和slave02上都不需要密碼,反向ssh到master同樣,互信設置需要在hadoop用戶下執行命令如下:

 

2.    創建或者修改密鑰目錄權限 (此操作在所有服務器完成後再進入下一步

假設本機的IP爲“192.168.1.100”,配置免登錄的操作步驟如下:

a.以hadoop用戶登錄各服務器。

b.執行以下命令,修改“.ssh 目錄”權限。

chmod 755 ~/.ssh  

說明:如果“.ssh”目錄不存在,請在/home/hadoop目錄執行 mkdir ~/.ssh 命令創建。  

3.    創建公鑰和私鑰(此操作在所有服務器完成後再進入下一步)

a.以hadoop用戶登錄本機(假設本機的IP爲“192.168.1.100”)。 

b.執行以下命令,進入“.ssh”目錄。

cd /home/hadoop/.ssh  

c.執行以下命令後,如果提示,就一直按“Enter”鍵,直至生成公鑰。   

    ssh-keygen -t rsa 

 

 

注:如果創建公鑰和私鑰後(黃色部分),提示的用戶名hadoop@後面不是本機別名(上圖紅色部分),說明主機名稱需要重新配置一次,然後記得重啓,然後刪除/.ssh目錄下的公鑰和私鑰,重新生成,直到生成的密鑰後綴是本機別名

          

(3)拷貝公鑰到服務器(要登錄上去的那臺服務器)

 

1.       執行以下命令(假設本機是192.168.1.100),並根據提示輸入登錄密碼,配置免登錄。

從master登錄到slave01

在主機名爲master的機子上執行以下命令:

在cd  .ssh目錄 下:

  scp id_rsa.pub hadoop@slave01:/home/hadoop/.ssh/authorized_keys

 

從slave01登錄到master

在主機名爲slave01的機子上執行以下命令:

在cd  .ssh目錄 下:

scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/authorized_keys


其它同理。

 

這樣就將生成的授權祕鑰拷貝到了slave01和slave02的/home/hadoop/.ssh目錄下,從 master 機器 ssh到 slave01 、slave02 都不再需要密碼了,同理,在slave01slave02機器上執行上面的命令即可完成slave01master之間的無密碼登錄。(其實,操作完後,slave01之間也是可以無密碼登錄的,只是不需要而已)

 

 

完成後,在節點master上ssh slave01看看能否無密碼登錄成功。同樣的測試master到節點slave02是否能夠無密碼登錄成功

現在是ssh ->slave01

      ssh->slave02

5.  配置 JDK 環境

# 解壓到 /opt/下面
tar zxvf jdk-7u9-linux-x64.tar.gz -C /opt/
# 配置java環境,最好在全局 /etc/profile 配置中修改,這樣所有用戶均可以使用
vi /etc/profile

JAVA_HOME=/opt/jdk1.7.0_09
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME

使修改的配置立即生效,終端中執行source /etc/profile。
測試是否ok,執行命令which java,若出現/opt/jdk1.7.0_09/bin/java 表示已經ok 或者java-version ,出現java version "1.7.0_09" 也表明ok。

 

注:每個節點都要裝jdk ,同理slave01、slave02

 

這裏有可能報:無法 open: 沒有那個文件或目錄。-à(權限問題)解決方法:在 root下執行。

 

6.  安裝maven

hadoop源碼是使用maven組織管理的,必須下載maven。從maven官網下載,下載地址是http://maven.apache.org/download.cgi,選擇 apache-maven-3.3.3-bin.tar.gz下載。

#解壓到 /opt/下面
tarzxvf apache-maven-3.3.3-bin.tar.gz  -C/opt/

會生成一個文件夾apache-maven-3.0.5,然後設置環境變量中。
# 配置maven環境,最好在全局 /etc/profile 配置中修改,這樣所有用戶均可以使用
vi /etc/profile

執行命令vi /etc/profile,編輯結果如下圖所示

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

export PATH=.:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

exportMAVEN_HOME

 

使修改的配置立即生效,終端中執行source /etc/profile

檢驗maven  is ok ?

mvn –version

 

 

7.  安裝findbugs(可選步驟)

findbugs是用於生成文檔的。如果不需要編譯生成文檔,可以不執行該步驟。從findbugs官網下載findbugs,下載地址是http://sourceforge.jp/projects/sfnet_findbugs/releases/,選擇findbugs-noUpdateChecks-3.0.1.tar.gz下載。

執行以下命令解壓findbugs到 /opt/下面
tar zxvf findbugs-noUpdateChecks-3.0.1.tar.gz -C /opt/

會生成一個文件夾findbugs-3.0.1,然後設置環境變量中。

執行命令vi /etc/profile,編輯結果如下圖所示

FINDBUGS_HOME=/opt/findbugs-3.0.1

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

exportPATH=.:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export MAVEN_HOME

export FINDBUGS_HOME

 

檢驗findbugs

findbugs –version

8.  安裝protoc

hadoop使用protocol buffer通信,從protoc官網下載protoc,下載地址是https://code.google.com/p/protobuf/downloads/list,選擇protobuf-2.5.0.tar.gz 下載。

爲了編譯安裝protoc,需要下載幾個工具,順序執行以下命令

yuminstall gcc

yuminstall gcc-c++

yuminstall make

如果操作系統是CentOS6.5那麼gcc和make已經安裝了。其他版本不一定。在命令運行時,需要用戶經常輸入“y”。

然後執行以下命令解壓縮protobuf

tarzxvf protobuf-2.5.0.tar.gz  -C /opt/

會生成一個文件夾protobuf-2.5.0,執行以下命令編譯protobuf。

cd/opt/protobuf-2.5.0

./configure --prefix=/usr/local/protoc/

make

make install

只要不出錯就可以了。

執行完畢後,編譯後的文件位於/usr/local/protoc/目錄下,我們設置一下環境變量

FINDBUGS_HOME=/opt/findbugs-3.0.1

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

exportPATH=.:/usr/local/protoc/bin:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export MAVEN_HOME

export FINDBUGS_HOME

檢查protoc

protoc –version

 

 

9.  安裝Ant

執行以下命令解壓ant到 /opt/下面
tar zxvf apache-ant-1.9.6-bin.tar.gz  -C/opt/

會生成一個文件夾apache-ant-1.9.6,然後設置環境變量中。

執行命令vi /etc/profile,編輯結果如下圖所示

ANT_HOME=/opt/apache-ant-1.9.6

FINDBUGS_HOME=/opt/findbugs-3.0.1

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

exportPATH=.:$ANT_HOME/bin:/usr/local/protoc/bin:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export MAVEN_HOME

export FINDBUGS_HOME

export ANT_HOME

 

檢視:ant -version

10.        編譯hadoop源碼

# 解壓到 /opt/下面
tarzxvf hadoop-2.5.2-src.tar.gz -C /opt/

->會生成一個文件夾 hadoop-2.5.2-src

cd /opt/hadoop-2.5.2-src
->解壓源碼tar包,並進入解壓後的根目錄(下面的命令一定要在cd 進入源代碼目錄下進行,否則會出錯)

mvn package -Pdist,native,docs –DskipTests-Dtar

mvn -X package -DskipTests -Pdist,native-Dtar  (如果出現錯誤可以加上-X顯示錯誤詳細信息:)

 注: cd 進入目錄,more BUILDING.txt  可以看到編譯hadoop 的詳細命令,官方說明的編譯命令是    mvn package -Pdist,native -DskipTests -Dtar  

但是在最新版的maven下可能會報錯,所以我修改命令爲  mvn cleanpackage -Pdist -Pnative -DskipTests -Dtar

當然一次編譯成功幾乎是不可能的,所以clean還是很有必要的,接下來就是等待,maven會下載各種jar包.

 

網絡不給力花的時間太長了(接近一個小時)。

 

 

進入編譯後的目錄,可看到以下文件

cd/opt/hadoop-2.5.2-src/hadoop-dist/target/

 

在root用戶下操作:

1.master/slave01/slave02 創建hadoop文件夾存放安裝包和解壓後的文件:

在master主機上

cd /home

mkdir hadoop

在slave01主機上

cd /home

mkdir hadoop

 

在slave02 主機上

cd /home

mkdir hadoop

 

將安裝包scp到自己的機子上

cd/opt/hadoop-2.5.2-src/hadoop-dist/target/

 

scp hadoop-2.5.2.tar.gz [email protected]:/home/hadoop/

scp hadoop-2.5.2.tar.gz [email protected]:/home/hadoop/


 

scp hadoop-2.5.2.tar.gz [email protected]:/home/hadoop/

 

 2.解壓安裝包

cd /home/hadoop

tar -zvxf hadoop-2.5.2.tar.gz

 

每臺節點都要安裝hadoop。分別解壓hadoop-2.5.2.tar.gz到三臺機器的hadoop目錄下。

 

3. 修改配置

cd /home/hadoop/hadoop-2.5.2/etc/hadoop

1)  vicore-site.xml

<configuration>

  <property>

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

      <value>/home/hadoop/tmp</value>

    <description>Abase for other   temporary directories.</description>

  </property>

  <property>

    <name>fs.defaultFS</name>

    <value>hdfs://master:9000</value>

  </property>

  <property>

    <name>io.file.buffer.size</name>

    <value>4096</value>

  </property>

</configuration>

2)  vihdfs-site.xml

<configuration>

  <property>

    <name>dfs.nameservices</name>

      <value>hadoop-cluster1</value>

  </property>

  <property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>master:50090</value>

  </property>

<property>

      <name>dfs.namenode.name.dir</name>

      <value>file:///home/hadoop/dfs/name</value>

  </property>

  <property>

      <name>dfs.datanode.data.dir</name>

    <value>file:///home/hadoop/dfs/data</value>

  </property>

  <property>

    <name>dfs.replication</name>

    <value>2</value>              --------------------------slave個數(註釋去掉)

  </property>

  <property>

      <name>dfs.webhdfs.enabled</name>

    <value>true</value>

  </property>

</configuration>

3)  vimapred-site.xml

<configuration>

  <property>

      <name>mapreduce.framework.name</name>

    <value>yarn</value>

  </property>

  <property>

      <name>mapreduce.jobtracker.http.address</name>

    <value>master:50030</value>

  </property>

  <property>

      <name>mapreduce.jobhistory.address</name>

    <value>master:10020</value>

  </property>

  <property>

      <name>mapreduce.jobhistory.webapp.address</name>

    <value>master:19888</value>

  </property>

</configuration>

 4) vi yarn-site.xml

<configuration> 

 

<!-- Site   specific YARN configuration properties -->   

    <property> 

        <name>yarn.nodemanager.aux-services</name> 

          <value>mapreduce_shuffle</value> 

    </property> 

    <property> 

          <name>yarn.resourcemanager.address</name> 

        <value>master:8032</value> 

    </property> 

    <property> 

        <name>yarn.resourcemanager.scheduler.address</name> 

        <value>master:8030</value> 

    </property> 

    <property> 

          <name>yarn.resourcemanager.resource-tracker.address</name> 

        <value>master:8031</value> 

    </property> 

    <property> 

          <name>yarn.resourcemanager.admin.address</name> 

        <value>master:8033</value> 

    </property> 

    <property> 

          <name>yarn.resourcemanager.webapp.address</name> 

        <value>master:8088</value> 

    </property> 

</configuration>

5) vi slaves  

刪掉localhost

輸入

master  (這樣master本身也作爲一個dataNode)

slave01

slave02

6) vi hadoop-env.sh

修改爲:exportJAVA_HOME=/opt/jdk1.7.0_09

7) vi yarn-env.sh

添加 export JAVA_HOME=/opt/jdk1.7.0_09

8)  將主機配置scp到兩臺slave上(避免後面兩臺機器再做重複的操作)

cd/home/hadoop/hadoop-2.5.2/etc

scp-r  hadoop root@slave01:/home/hadoop/hadoop-2.5.2/etc

scp-r  hadoop root@slave02:/home/hadoop/hadoop-2.5.2/etc

9). 主機上格式化文件系統

cd /home/hadoop/hadoop-2.5.2

bin/hdfs namenode -format 

(格式化過程中會有一次需要輸入yes)

10).啓動

sbin/start-dfs.sh

sbin/start-yarn.sh(或者sbin/start-all.sh)

 

?這裏有問題

 

 

6. 通過瀏覽器訪問

http://192.168.1.100:50070/

http://192.168.1.100:8088/

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章