1. 程式人生 > 實用技巧 >雲伺服器搭建Hadoop叢集

雲伺服器搭建Hadoop叢集

一、搭建說明

  1、搭建簡易的hadoop叢集,本次搭建使用三臺騰訊雲伺服器。其中,一臺作為NameNode管理DataNode的分佈資訊和執行狀態;兩臺作為普通的DataNode節點。

  2、本次使用Ubuntu16.04.6系統,搭建節點為master、slave1和slave2

二、搭建準備

  1、更改使用者名稱或新建使用者,名為hadoop(確保每臺機器上的使用者名稱相同,使ssh免密驗證更容易)。

  2、修改主機名和ip-hostname對映關係(修改 /etc/hostname 和 /etc/hosts 兩個檔案)。

    a.分別在三臺機器的/etc/hostname檔案修改主機名,分別取名為master,slave1,slave2 。

    b.在每臺機器的 /etc/hosts 檔案中中新增Ip和主機名的對映關係。設定本機對映為內網ip,其他伺服器的ip對映為公網ip(注意,每臺機器都需要新增所有的對映)

  3、ssh免登陸配置:在每臺伺服器的/home/hadoop/.ssh/ 目錄中,執行如下命令生成一對金鑰,並將本地主機的公鑰新增到遠端主機的authorized_keys檔案上。三臺機器兩兩雙向進行配置,注意包括自己對自已。(例子緊配置了自己)

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub master

  4、安裝java

apt-get install openjdk-8-jre

  5、Hadoop安裝:每臺伺服器Hadoop的安裝目錄必須一致,安裝包的配置資訊也必須一致。在/usr/local/目錄中新建software資料夾並進入,執行以下命令下載Hadoop安裝包,然後解壓到當前目錄

sudo wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
sudo tar -zxvf hadoop-2.8.5.tar.gz -C /usr/local/

  6、新增環境變數:在每臺伺服器的 /etc/profile 檔案最後新增hadoop,java的路徑。

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre export HADOOP_HOME=/usr/local/hadoop-2.8.5 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

source /etc/profile //執行後配置生效

  編輯~/.bashrc檔案,新增如下內容

export HADOOP_HOME=/usr/local/hadoop-2.8.5 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source ~/.bashrc

  7、測試安裝是否生效

java -version hadoop version

  

三、配置檔案的修改(配置檔案分別位於root/hadoop-2.8.5/etc/hadoop和root/zookeeper-3.3.3/conf)

  1、hadoop-env.sh:將25行左右的那一行替換成如下語句

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre 

  2、core-site.xml

 <configuration>
      <property>
          <name>hadoop.tmp.dir</name>
          <value>file:/usr/local/hadoop-2.8.5/tmp</value>
          <description>Abase for other temporary directories.</description>
      </property>
      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://master:9000</value>
      </property>
  </configuration>

  3、hdfs-site.xml

<configuration>
        <property>  
            <name>dfs.namenode.name.dir</name>  
            <value>file:/usr/local/hadoop-2.8.5/tmp/dfs/name</value>
        </property>  
        <property>  
            <name>dfs.datanode.data.dir</name>  
            <value>file:/usr/local/hadoop-2.8.5/tmp/dfs/data</value>
        </property>  
</configuration>

  4、mapred-site.xml:修改mapred-site.xml(複製mapred-site.xml.template,再修改檔名)

sudo mv ./mapred-site.xml.template ./mapred-site.xml

<configuration>
	<property>
    	<name>mapreduce.framework.name</name>
    	<value>yarn</value>
	</property>
</configuration>

  5、yarn-site.xml

<configuration>
  <!-- Site specific YARN configuration properties -->
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
      <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>master</value>
      </property>
  </configuration>

  6、slaves:在每臺伺服器的slaves檔案中配置叢集Datanode的主機名,只有這個檔案裡面的主機名才能被Namenode識別。

slave1
slave2

  

四、啟動Hadoop叢集

  1、在master主機上執行如下命令:

cd /usr/local/hadoop-2.8.5
bin/hdfs namenode -format
sbin/start-all.sh

  2、用jps檢視程序

五、測試

  檢視namenode狀態,目前master上的namenode處於active的狀態。

root@hadoop1:~# hdfs haadmin -getServiceState master
active

  執行一下hadoop提供的demo中的WordCount程式:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount input out

  

六、出現問題

  1、Host key verification failed.