實驗室需求 常常從裝
途中可能會遇到不少問題 不過大家遇到的問題都很類似 所以不用洩氣!
如果要一勞永逸的話 最好去 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上
使用以下指令測試 免密碼登入 (首次登入需打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
Step5.Hadoop 參數設置
<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>
<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>
(原本該處只有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>
<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執行!
留言列表

