close

實驗室需求  常常從裝 
途中可能會遇到不少問題 不過大家遇到的問題都很類似 所以不用洩氣!
如果要一勞永逸的話 最好去 logs/hbase-使用者名 中找log裡的Error 以後才不會重蹈覆轍
此文不少地方是參考大白鷺聖經的!

正文:

hadoop 2版 對應 HBase 0.98.1 +

務必注意版本對應問題 !

-------------------------------------------------------------
準備工作:

環境: Ubuntu 14.04
        預計三台機器
        1台Master  2台Slave

 

Step1.安裝Java 
於指令列輸入

 $sudo apt-get install openjdk-7-jdk

使用指令 檢查安裝是否成功

$java -version

安裝路徑預設為/usr/lib/jvm/java-7-openjdk-amd64

Step2. 建立連線前置動作
SSH是Hadoop,HBase的主要溝通管道 其中新手會常遇到使用者 權限問題
首先建議在每台機器上 新增一模一樣名稱的user 並加入一模一樣的group中

$sudo addgroup hadoop
$sudo adduser --ingroup hduser hadoop
            (sudo adduser <user> <group>)的意思 個人習慣使用者叫hduser  group叫hadoop

接下來要增加每台機器的IP端 於/etc/hosts內增加          

192.168.x.x master
192.168.x.x slave1
192.168.x.x slave2

(master,slave1,slave2是機器名字 記得檢查是否你的機器名字)
完成後記得重啟機器 或是 重啟網路 確定你的IP 機器名是對的

Step3.建立SSH
安裝SSH (沒網路的話會無法對外下載SSH 但以後為方便實驗可以固定IP 使用SSH時對內扔然OK)

$sudo apt-get install ssh

非常重要的一步! 之後每台的操作請都登入你前面步驟創好 專門用來跑hadoop的帳號 此處例子為hduser
不然途中會時常遇到權限問題

設置免密碼登入
使用以下指令產生 公鑰 與 私鑰  並將公鑰複製到授權位置

$ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

使用Scp 傳送 公鑰到各個slave上

$scp -r ~/.ssh slave1:~/
$scp -r ~/.ssh slave2:~/

使用以下指令測試 免密碼登入 (首次登入需打yes)
$ssh slave1
$exit

Step4.下載Hadoop 設置檔案權限
我習慣於安裝在/opt裡
$sudo wget http://ftp.twaren.net/Unix/Web/apache/hadoop/common/stable2/hadoop-2.6.0.tar.gz /opt
$sudo tar -zxvf hadoop-2.6.0.tar.gz
給予檔案權限 chown [-R] 帳號名稱:群組名稱 檔案或目錄  這指令時常用到!
$sudo chown -R hduser:hadoop /opt/hadoop-2.6.0
在/home/hduser下設置 Namenode  Datanode的資料儲存  (這裡使用者名稱是hduser) 要確定有權限 (hduser:hadoop的權限)
$mkdir /home/hduser/dfs/name
$mkdir /home/hduser/dfs/data
$mkdir /home/hduser/tmp

Step5.Hadoop 參數設置
 
1.在/opt/hadoop-2.6.0/etc/hadoop/hadoop-env.sh
      /opt/hadoop-2.6.0/etc/hadoop/yarn-env.sh   
   中加入 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
 
2.在/opt/hadoop-2.6.0/etc/hadoop/core-site.xml中加入以下
  

<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>

<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/tmp</value>
</property>

<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>master</value>
</property>

<property>
<name>hadoop.proxyuser.root.group</name>
<value>*</value>
</property>

3.在/opt/hadoop-2.6.0/etc/hadoop/hdfs-site.xml中加入以下

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>


<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hduser/dfs/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hduser/dfs/data</value>
</property>

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

<property>
<name>dfs.webhdfs.enable</name>
<value>true</value>
</property>

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

 
4.在/opt/hadoop-2.6.0/etc/hadoop/mapred-site.xml中加入以下
                 (原本該處只有mapred-site.xml.template  意思是樣式  你可以把原本這檔案改名為 mapred-site.xml 或留著.template 新建一個.xml都行 
                  就是該處一定要有mapred-site.xml檔案就是了)

<property>
<name>mapreduce.framework.name</name>
<value>yarn</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>

5.在/opt/hadoop-2.6.0/etc/hadoop/yarn-site.xml中加入以下

<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

<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>

<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>

6.於slaves中檔案加入
  slave1
  slave2
注意要跟/etc/hosts中的IP是對應的 且確認過可以無密碼登入 ssh slave1
否則會有連線問題!

Step6. Namenode format (只需首次)
    hadoop/bin/hadoop namenode -format
檢查倒數第三行:Storage directory ~/hadoop-2.6.0/hdfs/name has been successfully formatted

Step7. 檢查master ,slave1,slave2
$sbin/start-all.sh 
$jps
理論上會有以下行程
master:   NameNode , ResourceManager,SecondaryName
slave:      DataNode, NodeManager

hadoop2 與 hadoop1 主要差在 JobTracker 與 TeskTracker 改成 ResourceManager ,NodeManager
原本的mapreduce 由yarn執行!

全站熱搜
創作者介紹
創作者 yjhyjhyjh0 的頭像
yjhyjhyjh0

caca的程式之路

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