1. 程式人生 > >vmware centos hadoop分散式叢集搭建 粗略筆記

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-server命令安裝即可。

生成當前使用者的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