vmware centos hadoop分散式叢集搭建 粗略筆記
初始設定:
虛擬了三個CentOs系統(安裝CentOs的步驟省略),一臺master 兩臺slave,使用者名稱全部為hadoop,具體如下(除了第一步使用root使用者操作,其他均使用hadoop使用者):
1.新增hadoop使用者
第一步:groupadd 新建使用者組
groupadd hadoop
這是建立hadoop使用者組
第二步:useradd -m -g 已建立使用者組 新建使用者
useradd -m -g hadoop hadoop
這是新建hadoop使用者和家目錄也建立,並增加到hadoop組中。
2.給hadoop使用者增加sudo許可權以及修改host
1)切換到root使用者,su 輸入密碼 2)給sudoers增加寫許可權:chmod u+w /etc/sudoers 3)編譯sudoers檔案:vi /etc/sudoers 在root ALL=(ALL) ALL下方增加hadoop ALL=(ALL) NOPASSWD:ALL 4)去掉sudoers檔案的寫許可權:chmod u-w /etc/sudoers 5)修改host,vi /etc/hosts 192.168.1.106節點修改為master 192.168.1.107節點修改為slave1 192.168.1.107節點修改為slave2 6)每臺都增加5)裡面的域名解析
3.ssh免密碼登入
首先要配置本機的SSH伺服器,執行 ps -e | grep ssh
,檢視是否有sshd程序,如果沒有,說明server沒啟動,通過 /etc/init.d/ssh -start
啟動server程序,如果提示ssh不存在 那麼就是沒安裝server。centos下通過 yum -y install openssh-serve
r命令安裝即可。
生成當前使用者的SSH公鑰。
$ ssh-keygen -t rsa -P ""
它在/home/[你當前登入的使用者名稱] 下生成.ssh目錄(root使用者即是在/root目錄下),.ssh下有id_rsa和id_rsa.pub。id_rsa.pub即是本地SSH生成的公鑰檔案。客戶端機器將id_rsa.pub檔案新增到自己的~/.ssh/authorized_keys檔案中即可免密碼登入到本機。
新增金鑰
將~/.ssh/id_rsa.pub
新增到目標機器的~/.ssh/authorized_keys
檔案中
• 如果是本機的操作,則使用
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
將要登入的機器的公鑰新增到本地的認證金鑰庫中。注意這裡必須要用>>操作符進行追加操作。
使用
ssh localhost
命令即可免密碼登入到本地。
•如果是將自己的公鑰傳送到別的機器上。
可以使用
scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub
這條scp命令進行檔案上傳操作。
遇到的大坑:
配置ssh免密碼登入後,仍提示輸入密碼
解決方法:
首先我們就要去檢視系統的日誌檔案
tail /var/log/secure -n 20
發現問題的所在:Authentication refused: bad ownership or modes for file
從字面上可以看出是目錄的屬主和許可權配置不當,查詢資料得知:SSH不希望home目錄和~/.ssh目錄對組有寫許可權,通過下面幾條命令改下
chmod g-w /home/zhangming
chmod 700 /home/zhangming/.ssh
chmod 600 /home/zhangming/.ssh/authorized_keys
然後我們再去登入,就能不用密碼進入了。
4.安裝jdk,設定變數
通過把jdk傳進去,然後解壓,設定環境變數:
export JAVA_HOME=/home/hadoop/env/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/hadoop/env/hadoop-2.5.0
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
拷貝.bash_profile到兩臺其他節點電腦
scp .bash_profile [email protected]:~/tmp
scp .bash_profile [email protected]:~/tmp
然後每個都source一下source .bash_profile
5.配置hadoop配置檔案
編輯hdfs-site.xml
<!-- 設定namenode的http通訊地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!-- 設定secondarynamenode的http通訊地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<!-- 設定namenode存放的路徑 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/hadoop/name</value>
</property>
<!-- 設定hdfs副本數量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 設定datanode存放的路徑 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/hadoop/data</value>
</property>
編輯core-site.xml
<!-- 指定HDFS老大(namenode)的通訊地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop執行時產生檔案的儲存路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoop/tmp</value>
</property>
編輯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>
編輯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>
<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>
指定secondary namenode 的主機
新建一個masters的檔案,這裡指定的是secondary namenode 的主機
slave1
指定slave
修改slaves
slave1
slave2
6.傳送hadoop到其他節點系統
scp -r hadoop-2.5.0 [email protected]:~/env/
scp -r hadoop-2.5.0 [email protected]:~/env/
7.第一次啟動格式化,再啟動
./bin/hdfs namenode -format
./sbin/start-dfs.sh
./sbin/start-yarn.sh
8.結果
9.頁面端檢視
可能涉及到的知識點:
1.hostname修改
1.uname -a
檢視hostname
2.hostname newname
修改下,讓hostname立刻生效。
3.vi /etc/hosts
修改原hostname為 newname
4.vi /etc/sysconfig/network
修改原hostname為newname , reboot重啟後也生效
2.檢視埠是否被佔用
netstat -anp | grep 埠
3.關閉防火牆
service iptables stop
關閉防火牆
chkconfig iptables off
永久關閉防火牆
4.重啟網路
service network restart