close

準備工具

測試機台x1 : 主機可以只要可以Power on就好 名稱叫 master01

OS: CentOS 6.5 x64

JAVA JDK 1.7_65 x64

Hadoop 2.2.0

putty.exe

 

 

CentOS 6.5 x64

其實現在CentOS已經出到7了 但是因為他的minimal安裝實在是太minimal,

一些常用的Linux tools都沒有 索性就用6.5就好 反正看官網表示 CentOS 6.5支援到2020 年 11 月 30 日

還這麼久就先將就用吧

 

JAVA JDK 1.7_65 x64

正好我電腦的版本是最近的這個 所以就順便幫master01安裝此版號 記得是JDK不是JRE, JRE沒有一些開發套件

 

Hadoop 2.2.0

為什麼要用2.2.0? 官網有2.4.1

是因為之後再Client端上的電腦我會採用Eclipse + Hadoop plug-in套件來做開發

但我發現網路上提供的hadoop2x-eclipse-plugin-master這個source code用Hadoop 2.4.0和2.4.1的版本

雖然我都可以自己compile成自己想要的Eclipse版本 但是會發生呼叫"New Hadoop Location"和"Edit Hadoop Location"會有視窗無法彈出的問題

進而無法設定要連線的IP和port 導致無法連線 而我的目的也不是幫這套件debug 先把Hadoop裝起來再說~~

 

putty.exe

好用的remote連線程式 很多command與其慢慢打不如用Client端連線貼上

 

 

開始

安裝CentOS 6.5 minimal版本沒啥困難 只要上官網下在minimal版本照步驟安裝就好

(順道一提CentOS 7有把GUI版本和minimal版本整合再一起 之後都只會有一種iso檔也是滿方便的)

首先幫master01這台安裝完OS後 先連上網路和update套件和安裝一些Development tools

因為我住的地方是租的 沒有固定IP 而其他網路上的教學都是直接請你用固定IP 但是對於是處於內網環境的就不適用

所以首先我們更新OS的時候先用DHCP模式讓他自動分配IP 不過基本上剛安裝完就是DHCP模式 所以只要用ifup eth0這指令啟動網路卡就可以上網

(不確定你的網路卡名稱可以用ifconfig看是不真的叫eth0)

連上網後先用yum -y update更新你的OS 再用yum -y groupinstall  "Development tools"安裝一些必要的開發工具

到這邊就可以把對外的網路線拔掉 避免駭客入侵 接下來的工作我們都會在內網模式下完成

 

1. 首先我們先設定網路成內網 vi /etc/sysconfig/network-scripts/ifcfg-eth0

以下幾個需要修改的

BOOTPROTO=none    #DHCP關閉
IPADDR=192.168.70.16    #這台主機的固定IP 可以自訂
NETMASK=255.255.255.0   #固定寫法
GATEWAY=168.95.1.1  #可要可不要 目前試過拿掉不會有事 
DNS1=192.168.128.2    #可要可不要

 

這步單一主機可以跳過 後來拿掉覺得沒影響

2. vi /etc/hosts

增加192.168.70.16 master01在下方

 

3. vi /etc/sysconfig/network 設定hostname主機名稱

HOSTNAME=master01

 

最後用 service network restart重新啟動網路

以上就是設定成內網 和一些基本的網路設定

 

接著去JAVA官網下載JAVA JDK 1.7.0_65 我CentOS安裝的是64位元版本 所以就下載jdk-7u65-linux-x64.rpm

順便去下載Hadoop2.2.0 找到hadoop-2.2.0.tar.gz就對了

下載完後兩個都丟到隨身碟裡 把USB插上master01 用linux的mount指令去讀隨身碟

rpm -ivh  jdk-7u65-linux-x64.rpm這個指令自動幫你把JAVA安裝到 /usr/java/裡 再用java -version確認版本無誤

用這rpm安裝的好處是不用再去/etc/profile裡幫JAVA設定路徑 它會自動填入

export JAVA_HOME=/usr/java/jdk1.7.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

 

接著安裝Hadoop2.2.0

我的作法先把hadoop-2.2.0.tar.gz給解壓縮放在USB裡 所以他會是一個Hadoop-2.2.0的資料夾

接著到根目錄下用cd /opt再用mv /mnt/Hadoop/hadoop-2.2.0 hadoop直接把資料夾整個搬過去

再來要指定路徑給hadoop

vi ~/.bashrc

然後貼上以下字串

export HADOOP_HOME=/opt/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

存檔離開後用source ~/.bashrc 載入設定值

再用hadoop version確認安裝成功和版本

 

接著設定JAVA路徑給hadoop 讓他能夠順利在JAVA下運行 可以看到有一些file它裡面會有類似if(JAVA_HOME)之類的語法

通常這些檔案就會需要幫他設定JAVA的路徑給他 所以你會到到有一些.sh 之類的我不會去設定他 因為他吃不到JAVA_HOME

目前看到的就是以下三隻檔案需要加入

vi /opt/hadoop/etc/libexec/hadoop-config.sh

在尾端的地方加入export JAVA_HOME="/usr/java/jdk1.7.0_65"

 

vi /opt/hadoop/etc/hadoop/hadoop-env.sh

在尾端的地方加入export JAVA_HOME="/usr/java/jdk1.7.0_65"

 

vi /opt/hadoop/etc/hadoop/yarn-env.sh

同樣在尾端的地方加入export JAVA_HOME="/usr/java/jdk1.7.0_65"

 

如果想要簡化的寫法可以直接用 寫成scipts時比較方便

cat >> /opt/hadoop/etc/libexec/hadoop-config.sh << EOF

export JAVA_HOME="/usr/java/jdk1.7.0_65"

EOF

 

cat >> /opt/hadoop/etc/libexec/hadoop-config.sh << EOF

export JAVA_HOME="/usr/java/jdk1.7.0_65"

EOF

 

cat >> /opt/hadoop/etc/libexec/hadoop-config.sh << EOF

export JAVA_HOME="/usr/java/jdk1.7.0_65"

EOF

 

當然還有關鍵的xml檔要設定 hadoop的一些屬性都需要在這邊依照需求設定

這邊在各式的hadoop安裝教學網你會看到每個人的寫法都不一樣 有些多有些少 原因是這邊的property不設定的話hadoop也會以default值去做

我們先用少少的指令早日看到hadoop的網頁吧

1. 首先是最重要的hadoop的核心core-site.xml   使用指令vi opt/hadoop/etc/hadoop/core-site.xml

你會看到<configration>和</configuration>之間空無一物 我們需要幫他設定位置 好讓我們可以用web瀏覽器看到她

插入

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

結束  master01後面的的9000指的是port, 可以自訂成想要的 不過我們就照通用的寫法設9000吧

 

2. hdfs的設定 vi opt/hadoop/etc/hadoop/hdfs-site.xml

也是看到<configration>和</configuration>之間空空的 幫他補上

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

代表它可以備份成一份  在多台主機的狀況下此處可以設為3

 

3. MapReduce的設定 

在hadoop-0.2.3之後你會發現mapred-site.xml不見了 根據官網的說法現在使用的是MapReduce 2又叫YARN

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

但是我們依然還是要把MapReduce指定給YARN 在他的資料夾中仍然有付上mapred-site.xml.template

所以我們先用cp mapred-site.xml.template mapred-site.xml 複製一份mapred-site.xml出來

接著用vi opt/hadoop/etc/hadoop/mapred-site.xml

 

插入

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

這樣就可以告訴MapReduce去跑YARN的API

 

4. YARN的設定 vi opt/hadoop/etc/hadoop/yarn-site.xml

插入

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

多台主機的話這邊還會需要多設定一些address之類 不過此處先以此方式足矣

 

到這邊Hadoop的基本設定都已完成 這時先用指令格式化hadoop namenode -format

再用start-all.sh啟動Hadoop

就可以用http://192.168.70.16:8088 觀看MapReduce的Web頁面

http://192.168.70.16:50070觀看HDFS的頁面

arrow
arrow
    全站熱搜

    kurthung1224 發表在 痞客邦 留言(1) 人氣()