準備工具
測試機台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的頁面
留言列表