hadoop 安裝和部署
安裝目標目錄: /usr/local/hadoop
HDFS數據,Log,臨時數據目錄:/var/local/hadoop/
hadoop 用戶: hadoop
JDK:1.6 版本
一,建立用戶hadoop
大部情況下可以直接在root用戶下安裝,在此處特意建立以hadoop為用戶名進行相關操作
>useradd hadoop
#建立hadoop用戶
>passwd hadoop #修改密碼
>passwd hadoop #修改密碼
二,安裝JDK。
建議切換到root 用戶下面安裝JDK,如下圖:
>su root
#切換至root用戶
>cd software #進入安裝的軟件目錄
>chmod u +x jdk - 6u25 -linux -x64 -rpm.bin #給*.bin增加可執行權限
>. /jdk - 6u25 -linux -x64 -rpm.bin #回車,安裝開始。
>cd software #進入安裝的軟件目錄
>chmod u +x jdk - 6u25 -linux -x64 -rpm.bin #給*.bin增加可執行權限
>. /jdk - 6u25 -linux -x64 -rpm.bin #回車,安裝開始。
JDK安裝完成,並且檢查安裝是否成功。
>java
--versiov
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1. 7. 4) (rhel - 1. 21.b17.el6 -x86_64)
OpenJDK 64 -Bit Server VM (build 14. 0 -b16, mixed mode)
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1. 7. 4) (rhel - 1. 21.b17.el6 -x86_64)
OpenJDK 64 -Bit Server VM (build 14. 0 -b16, mixed mode)
某些情況下,需要手工配置全局的JAVA運行環境,即在/etc/profile中進行配置。
有時候由於產線或者系統中部署了多個JDK版本,則可以通過~/.bashrc或者~/.bashprofile用來對當前用戶的JDK環境指定。
關於profile,bashrc等啟動順序,可以自行復習Linux啟動腳本順序。
如下圖中,主要在/etc/profile中進行全局配置。
>cd /usr #進入/usr目錄,大部分情況下java都安裝在/usr下面子目錄
>find -name java #查找java安裝路徑
. /java /jdk1. 6.0_25 /jre /bin /java
. /java /jdk1. 6.0_25 /bin /java
>cd /etc #進入/etc目錄
>vim profile #編輯/etc/profile
在/etc/profile 文件尾追加寫入如下內容:
JAVA_HOME = /usr /java /jdk1. 6.0_25
HADOOP_HOME = /usr /local /hadoop
HADOOP_CONF_DIR =$HADOOP_HOME /conf
CLASSPATH =. :$JAVA_HOME /lib :$HADOOP_HOME /lib
PATH =$PATH :$JAVA_HOME /bin :$JAVA_HOME /jre /bin :$HADOOP_HOME /bin
export JAVA_HOME
export HADOOP_HOME
export HADOOP_CONF_DIR
讓環境變量生效,如下圖執行:
source
/etc
/profile
三,設置ssh
配置本機ssh,使得使用hadoop用戶ssh登陸時不需要提供密碼驗證,對於偽分布式的hadoop部署之需要設置如下信息,則基本ssh配制成功。
>su hadoop
#切換到hadoop用戶
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 驗證信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加驗證信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh localhost #測試本機主機名不需要驗證就可以登錄則成功
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 驗證信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加驗證信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh localhost #測試本機主機名不需要驗證就可以登錄則成功
如果配置多台機器的cluster完整分布式集群,例如:
10.
16.
45.
209 s1
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
使用如下命令操作加入主機名和IP映射
>su root
>vim /etc /hosts
>vim /etc /hosts
更新類似如下內容:
10.
16.
45.
209 s1
# Added by NetworkManager
127. 0. 0. 1 localhost.localdomain localhost
: : 1 sstrtst20.buyabs.corp sstrtst20 localhost6.localdomain6 localhost6
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
127. 0. 0. 1 localhost.localdomain localhost
: : 1 sstrtst20.buyabs.corp sstrtst20 localhost6.localdomain6 localhost6
10. 16. 45. 226 s2
10. 16. 45. 227 s3
10. 16. 45. 231 s4
分布式SSH設置如下圖,ssh登錄10.16.45.209:
>su hadoop
#切換到hadoop用戶
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 驗證信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加驗證信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh s1 #測試當前主機不需要驗證既可登錄
>scp ~ /.ssh /id_dsa.pub 10. 16. 45. 226 : /home /hadoop /.ssh /
>ssh 10. 16.45.226
>su hadoop
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加驗證信息到authorized_keys文件
>ssh s1 #測試
依次將sstrtst20的~/.ssh/id_dsa.pub拷貝到其他ip地址並且追加到authorized_keys文件。
>ssh -keygen -t dsa -P '' -f ~ /.ssh /id_dsa #初始化ssh 驗證信息
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加驗證信息到authorized_keys文件
>chmod 700 ~ /.ssh
>chmod 600 ~ /.ssh /authorized_keys
>ssh s1 #測試當前主機不需要驗證既可登錄
>scp ~ /.ssh /id_dsa.pub 10. 16. 45. 226 : /home /hadoop /.ssh /
>ssh 10. 16.45.226
>su hadoop
> cat ~ /.ssh /id_dsa.pub >> ~ /.ssh /authorized_keys #追加驗證信息到authorized_keys文件
>ssh s1 #測試
四,安裝配置hadoop
解壓縮安裝包並且進行相關配置,如下圖:
>su root
>tar xzvf hadoop - 0. 20. 2 -cdh3u1.tar.gz #解壓縮
> mv hadoop - 0. 20. 2 -cdh3u1 hadoop #改名
> mv hadoop /usr /local #移動文件
>chown -R hadoop :hadoop /usr /local /hadoop #修改/usr/local/hadoop 目錄以及目錄內容數據hadoop:hadoop用戶/用戶組
>cd /usr /local /hadoop /conf
>vim hadoop -env.sh
>tar xzvf hadoop - 0. 20. 2 -cdh3u1.tar.gz #解壓縮
> mv hadoop - 0. 20. 2 -cdh3u1 hadoop #改名
> mv hadoop /usr /local #移動文件
>chown -R hadoop :hadoop /usr /local /hadoop #修改/usr/local/hadoop 目錄以及目錄內容數據hadoop:hadoop用戶/用戶組
>cd /usr /local /hadoop /conf
>vim hadoop -env.sh
設置hadoop-env.sh內容:
export JAVA_HOME
=$JAVA_HOME
export HADOOP_CLASSPATH = "$HADOOP_CLASSPATH"
export HADOOP_HEAPSIZE = 2048
export HADOOP_LOG_DIR = /var /local /logs
export HADOOP_PID_DIR = /var /local /pids
export HADOOP_CLASSPATH = "$HADOOP_CLASSPATH"
export HADOOP_HEAPSIZE = 2048
export HADOOP_LOG_DIR = /var /local /logs
export HADOOP_PID_DIR = /var /local /pids
設置masters內容
s1
設置slaves內容
s1
s2
s3
s4
s2
s3
s4
設置hdfs-site.xml內容
<configuration
>
<property >
<name >dfs.permissions < /name >
<value >false < /value >
< /property >
<property >
<name >dfs.name.dir < /name >
<value > /var /local /hadoop /cache /hadoop /dfs /name < /value >
< /property >
< /configuration >
<property >
<name >dfs.permissions < /name >
<value >false < /value >
< /property >
<property >
<name >dfs.name.dir < /name >
<value > /var /local /hadoop /cache /hadoop /dfs /name < /value >
< /property >
< /configuration >
設置mapred-site.xml內容
<configuration
>
<property >
<name >mapred.job.tracker < /name >
<value >s1 : 8021 < /value >
< /property >
< /configuration >
<property >
<name >mapred.job.tracker < /name >
<value >s1 : 8021 < /value >
< /property >
< /configuration >
設置core-site.xml內容
<configuration
>
<property >
<name >fs.default.name < /name >
<value >hdfs : / /s2 : 8020 < /value >
< /property >
<property >
<name >hadoop.tmp.dir < /name >
<value > /var /local /hadoop /cache /${user.name} < /value >
< /property >
<property >
<name >webinterface.private.actions < /name >
<value >true < /value >
< /property >
< /configuration >
<property >
<name >fs.default.name < /name >
<value >hdfs : / /s2 : 8020 < /value >
< /property >
<property >
<name >hadoop.tmp.dir < /name >
<value > /var /local /hadoop /cache /${user.name} < /value >
< /property >
<property >
<name >webinterface.private.actions < /name >
<value >true < /value >
< /property >
< /configuration >
設置log4j,請自行配置。
依次將hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,masters,slaves文件分發到其它hadoop node
五,創建hadoop 數據,log,pids目錄
創建hadoop log,pid,hadoop目錄並且設置操作權限,如下:
>su root
>mkdir /var /local
>mkdir /var /local /hadoop
>mkdir /var /local /logs
>mkdir /var /local /pids
>cd /var /local
>chown -R hadoop :hadoop *
>chmod ugo +rw *
>mkdir /var /local
>mkdir /var /local /hadoop
>mkdir /var /local /logs
>mkdir /var /local /pids
>cd /var /local
>chown -R hadoop :hadoop *
>chmod ugo +rw *
六,啟動准備
>su hadoop
>hadoop namenode -format #格式化HDFS數據存儲
>cd /usr /local /hadoop /bin #必須在namenode 上啟動
>sh start -all.sh #啟動
>hadoop fs - ls / #測試
>hadoop fs -put demo.txt /user /hadoop /demo.txt #向HDFS上傳demo.txt並且存儲在/user/hadoop/demo.txt
>hadoop fs - cat /user /hadoop /demo.txt #打印
>hadoop namenode -format #格式化HDFS數據存儲
>cd /usr /local /hadoop /bin #必須在namenode 上啟動
>sh start -all.sh #啟動
>hadoop fs - ls / #測試
>hadoop fs -put demo.txt /user /hadoop /demo.txt #向HDFS上傳demo.txt並且存儲在/user/hadoop/demo.txt
>hadoop fs - cat /user /hadoop /demo.txt #打印
七,系統自動啟動
利用CentOS chkconfig,在/etc/init.d/ 中創建start,stop,restart腳本,利用chkconfig --add 加入服務,利用chkconfig --level on 設置啟動級別。
八,觀察hadoop 運行進程
在namenode上觀察:
>jps
14520 NameNode
15005 TaskTracker
14641 DataNode
14881 JobTracker
7647 Jps
14790 SecondaryNameNode
14520 NameNode
15005 TaskTracker
14641 DataNode
14881 JobTracker
7647 Jps
14790 SecondaryNameNode
在datanode上觀察:
>jps
3462 TaskTracker
16687 Jps
3349 DataNode
3462 TaskTracker
16687 Jps
3349 DataNode