Hadoop2.7.3+Spark2.1.0完全分佈式集羣搭建過程

1.選取三臺服務器(CentOS系統64位)

  114.55.246.88 主節點

  114.55.246.77 從節點

  114.55.246.93 從節點

     之後的操作如果是用普通用戶操作的話也必須知道root用戶的密碼,因爲有些操作是得用root用戶操作。如果是用root用戶操作的話就不存在以上問題。

  我是用root用戶操作的。

2.修改hosts文件

  修改三臺服務器的hosts文件。

  vi /etc/hosts

  在原文件的基礎最後面加上:

114.55.246.88 Master114.55.246.77 Slave1114.55.246.93 Slave2

  修改完成後保存執行如下命令。

  source /etc/hosts

3.ssh無密碼驗證配置

  3.1安裝和啓動ssh協議

  我們需要兩個服務:ssh和rsync。

  可以通過下面命令查看是否已經安裝:

  rpm -qa|grep openssh

  rpm -qa|grep rsync

  如果沒有安裝ssh和rsync,可以通過下面命令進行安裝:

  yum install ssh (安裝ssh協議)

  yum install rsync (rsync是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件)

  service sshd restart (啓動服務)

  3.2 配置Master無密碼登錄所有Salve

  配置Master節點,以下是在Master節點的配置操作。

  1)在Master節點上生成密碼對,在Master節點上執行以下命令:

  ssh-keygen -t rsa -P ''

  生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在"/root/.ssh"目錄下。

  2)接着在Master節點上做如下配置,把id_rsa.pub追加到授權的key裏面去。

  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  3)修改ssh配置文件"/etc/ssh/sshd_config"的下列內容,將以下內容的註釋去掉:

  RSAAuthentication yes # 啓用 RSA 認證

  PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式

  AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

  4)重啓ssh服務,才能使剛纔設置有效。

  service sshd restart

  5)驗證無密碼登錄本機是否成功。

  ssh localhost

  6)接下來的就是把公鑰複製到所有的Slave機器上。使用下面的命令進行復制公鑰:

  scp /root/.ssh/id_rsa.pub root@Slave1:/root/

  scp /root/.ssh/id_rsa.pub root@Slave2:/root/

  

  接着配置Slave節點,以下是在Slave1節點的配置操作。

  1)在"/root/"下創建".ssh"文件夾,如果已經存在就不需要創建了。

  mkdir /root/.ssh

  2)將Master的公鑰追加到Slave1的授權文件"authorized_keys"中去。

  cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

  3)修改"/etc/ssh/sshd_config",具體步驟參考前面Master設置的第3步和第4步。

  4)用Master使用ssh無密碼登錄Slave1

  ssh 114.55.246.77

  5)把"/root/"目錄下的"id_rsa.pub"文件刪除掉。

  rm –r /root/id_rsa.pub

  重複上面的5個步驟把Slave2服務器進行相同的配置。

  3.3 配置所有Slave無密碼登錄Master

  以下是在Slave1節點的配置操作。

  1)創建"Slave1"自己的公鑰和私鑰,並把自己的公鑰追加到"authorized_keys"文件中,執行下面命令:

  ssh-keygen -t rsa -P ''

  cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

  2)將Slave1節點的公鑰"id_rsa.pub"複製到Master節點的"/root/"目錄下。

  scp /root/.ssh/id_rsa.pub root@Master:/root/

  

  以下是在Master節點的配置操作。

  1)將Slave1的公鑰追加到Master的授權文件"authorized_keys"中去。

  cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

  2)刪除Slave1複製過來的"id_rsa.pub"文件。

  rm –r /root/id_rsa.pub

 

  配置完成後測試從Slave1到Master無密碼登錄。

  ssh 114.55.246.88

  按照上面的步驟把Slave2和Master之間建立起無密碼登錄。這樣,Master能無密碼驗證登錄每個Slave,每個Slave也能無密碼驗證登錄到Master。

4.安裝基礎環境(JAVA和SCALA環境)

  4.1 Java1.8環境搭建

  1)下載jdk-8u121-linux-x64.tar.gz解壓

  tar -zxvf jdk-8u121-linux-x64.tar.gz

  2)添加Java環境變量,在/etc/profile中添加:

export JAVA_HOME=/usr/local/jdk1.8.0_121PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/rt.jar
export JAVA_HOME PATH CLASSPATH

  3)保存後刷新配置

  source /etc/profile

  4.2 Scala2.11.8環境搭建

  1)下載scala安裝包scala-2.11.8.rpm安裝

  rpm -ivh scala-2.11.8.rpm

  2)添加Scala環境變量,在/etc/profile中添加:

export SCALA_HOME=/usr/share/scala
export PATH=$SCALA_HOME/bin:$PATH

  3)保存後刷新配置

  source /etc/profile

5.Hadoop2.7.3完全分佈式搭建

  以下是在Master節點操作:

  1)下載二進制包hadoop-2.7.3.tar.gz

  2)解壓並移動到相應目錄,我習慣將軟件放到/opt目錄下,命令如下:

  tar -zxvf hadoop-2.7.3.tar.gz

  mv hadoop-2.7.3 /opt

  3)修改相應的配置文件。

  修改/etc/profile,增加如下內容:

複製代碼

 export HADOOP_HOME=/opt/hadoop-2.7.3/
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

複製代碼

  修改完成後執行:

  source /etc/profile

 

  修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh,修改JAVA_HOME 如下:

  export JAVA_HOME=/usr/local/jdk1.8.0_121

  

  修改$HADOOP_HOME/etc/hadoop/slaves,將原來的localhost刪除,改成如下內容:

Slave1
Slave2

  

  修改$HADOOP_HOME/etc/hadoop/core-site.xml

複製代碼

<configuration>
     <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>/opt/hadoop-2.7.3/tmp</value>
    </property></configuration>

複製代碼

  

  修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml

複製代碼

<configuration>
   <property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>Master:50090</value>
   </property>
   <property>
     <name>dfs.replication</name>
     <value>2</value>
   </property>
   <property>
     <name>dfs.namenode.name.dir</name>
     <value>file:/opt/hadoop-2.7.3/hdfs/name</value>
   </property>
   <property>
     <name>dfs.datanode.data.dir</name>
     <value>file:/opt/hadoop-2.7.3/hdfs/data</value>
   </property></configuration>

複製代碼

 

  複製template,生成xml,命令如下:

  cp mapred-site.xml.template mapred-site.xml

  修改$HADOOP_HOME/etc/hadoop/mapred-site.xml

複製代碼

<configuration>
<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.address</name>
         <value>Master:19888</value>
 </property></configuration>

複製代碼

 

  修改$HADOOP_HOME/etc/hadoop/yarn-site.xml

複製代碼

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</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></configuration>

複製代碼

 

  4)複製Master節點的hadoop文件夾到Slave1和Slave2上。

  scp -r /opt/hadoop-2.7.3 root@Slave1:/opt

  scp -r /opt/hadoop-2.7.3 root@Slave2:/opt

 

  5)在Slave1和Slave2上分別修改/etc/profile,過程同Master一樣。

  6)在Master節點啓動集羣,啓動之前格式化一下namenode:

  hadoop namenode -format

  啓動:

  /opt/hadoop-2.7.3/sbin/start-all.sh

  至此hadoop的完全分佈式環境搭建完畢。

  

  7)查看集羣是否啓動成功:

  jps

  Master顯示:

  SecondaryNameNode

  ResourceManager

  NameNode

  

  Slave顯示:

  NodeManager

  DataNode

6.Spark2.1.0完全分佈式環境搭建

  以下操作都在Master節點進行。

  1)下載二進制包spark-2.1.0-bin-hadoop2.7.tgz

  2)解壓並移動到相應目錄,命令如下:

  tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz

  mv hadoop-2.7.3 /opt

  3)修改相應的配置文件。

  修改/etc/profie,增加如下內容:

export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7/
export PATH=$PATH:$SPARK_HOME/bin

  

  複製spark-env.sh.template成spark-env.sh

  cp spark-env.sh.template spark-env.sh

  修改$SPARK_HOME/conf/spark-env.sh,添加如下內容:

複製代碼

export JAVA_HOME=/usr/local/jdk1.8.0_121export SCALA_HOME=/usr/share/scala
export HADOOP_HOME=/opt/hadoop-2.7.3export HADOOP_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop
export SPARK_MASTER_IP=114.55.246.88export SPARK_MASTER_HOST=114.55.246.88export SPARK_LOCAL_IP=114.55.246.88export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=2export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.7.3/bin/hadoop classpath)

複製代碼

 

  複製slaves.template成slaves

  cp slaves.template slaves

  修改$SPARK_HOME/conf/slaves,添加如下內容:

Master
Slave1
Slave2

  4)將配置好的spark文件複製到Slave1和Slave2節點。

  scp /opt/spark-2.1.0-bin-hadoop2.7 root@Slave1:/opt

      scp /opt/spark-2.1.0-bin-hadoop2.7 root@Slave2:/opt

  5)修改Slave1和Slave2配置。

  在Slave1和Slave2上分別修改/etc/profile,增加Spark的配置,過程同Master一樣。

  在Slave1和Slave2修改$SPARK_HOME/conf/spark-env.sh,將export SPARK_LOCAL_IP=114.55.246.88改成Slave1和Slave2對應節點的IP。

  6)在Master節點啓動集羣。

  /opt/spark-2.1.0-bin-hadoop2.7/sbin/start-all.sh

  7)查看集羣是否啓動成功:

  jps

  Master在Hadoop的基礎上新增了:

  Master

  

  Slave在Hadoop的基礎上新增了:

  Worker


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章