Ubuntu系統:分佈式spark環境搭建

三臺機子,系統爲ubuntu14.01,公用一個路由器組成一個小型局域網。

首先配置固定的ip地址。
點擊屏幕右上方的網絡連接,Edit Connections -> Add -> 類型選Ethernet -> Create -> 選擇IPv4 Setting -> Method選擇 Manual(手動)-> Add
對於可以填什麼,可以點開網絡連接處的Connection Information,對應着填入。
固定ip配置
修改hosts文件
三臺機子都要修改hosts文件:

sudo gedit /etc/hosts
在原文件後面加上:
192.168.1.102 Master
192.168.1.104 Slave1
192.168.1.105 Slave2
使配置文件生效:
source /etc/hosts

ssh無密碼驗證配置
安裝ssh:sudo apt-get update sudo apt-get install ssh
注意,以下操作均在root用戶下執行,從普通用戶跳到root可使用命令sudo su

配置Master無密碼登陸slave
1、在Master節點上生成密碼對ssh-keygen -t rsa -P ''
生成的密碼對id_rsa和id_rsa.pub默認保存在/root/.ssh目錄下
2、將id_rsa.pub追加到授權的key裏面去

cat ~/.ssh/id_rsa.pub >> ~/.sh/authorized_keys
# ~/.ssh和/root/.ssh是同一個意思

3、修改ssh配置文件/etc/ssh/sshd_config裏面的內容,將以下三行的註釋去掉

RSAAuthentication yes # 啓用 RSA 認證
PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

4、驗證無密碼本地登陸:ssh localhost
5、把公鑰複製到所有的Slave機器上。很多博客做這一步都是用以下兩行命令:

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

但是我用這兩行命令後會被提問slave1和slave2的密碼,輸密碼後又permission denied,所以最後我直接用u盤拷貝的方法,把master的id_rsa.pub拷貝到其他兩臺機子的/root/.ssh/下面

接着配置slave節點,以slave1爲例:
1、在/root/下面創建".ssh"文件:mkdir /root/.ssh (注意slave此刻也在root用戶下哦~)
2、將master的公鑰追加到slave1的授權文件中去:
cat /roo/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
3、修改配置文件etc/ssh/sshd_config,同上面的3、4步。
4、最後刪除master的公鑰文件id_rsa.pub

用Master無密碼登陸slave1,在master的終端上測試,成功的話,以下兩條命令都可以登陸slave1:

ssh Slave1
ssh 192.168.1.104

同樣的道理,想讓A機無密碼登錄B機,就先在A機本地生成密碼對(id_rsa.pub和id_rsa)。
把公鑰id_rsa.pub追加到A機自身的授權文件authorized_keys中去,成功的話,ssh localhost 可以本地登錄,然後將公鑰放置到B機上,追加到B機的授權文件中去,由此A機就能登錄B機,想讓B機登錄A機也是相同操作。
如此這番後,我的三臺機子都可以互相無密碼登錄啦~

java和scala基礎環境
這部分我就不寫啦,下載相應的包,解壓到指定路徑並添加路徑到配置文件/etc/profile。

hadoop完全分佈式搭建
在master節點進行以下操作:
1、下載二進制包hadoop-2.6.5.tar.gz
2、解壓並移動到對應的目錄:tar -zxvf hadoop-2.6.5.tar.gz -C /opt/
3、修改配置文件,在上一步添加java/scala路徑的配置文件中加入HADOOP_HOME及其路徑,並source /etc/profile 保存
4、修改 $HADOOP_HOME/etc/hadoop/slaves,將原來的localhost刪除並添加:

Slave1
Slave2

5、修改 $HADOOP_HOME/etc/hadoop/core-site.xml
(注意對應的hadoop路徑和版本根據你自己放的位置來寫)

<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>

6、修改 $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>

7、重命名template: cp mapred-site.xml.template 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>

8、修改 $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>

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

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

10、修改Slave1和Slave2上的配置文件,過程和Master的一樣,添加路徑即可
11、在master上啓動集羣
首先,格式化一下namenode: hadoop namenode -format
啓動:/opt/hadoop-2.7.3/sbin/start-all.sh
接下來看到日誌信息,hadoop的分佈式就搭建成功了。
12、查看集羣是否成功啓動,輸入jps, master顯示:
  hadoop-master-jps
Slave1顯示:
hadoop-slave-jps
 
瀏覽器中輸入:localhost:50070 可以看到hadoop中的Namenode Information :
在這裏插入圖片描述

spark分佈式搭建
首先在master機子上進行操作
1、下載二進制包spark-2.4.0-bin-hadoop2.7.tgz
2、解壓到指定位置tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz -C /opt/,我順便重命名了cp spark-2.4.0-bin-hadoop2.7.tgz spark
3、修改配置文件/etc/profile 添加路徑到SPARK_HOME
4、進入/opt/spark/conf,重命名spark-env.sh.template文件,並添加內容

cp spark-env.sh.template spark-env.sh
gedit spark-env.sh
--------------添加以下內容------------------
export JAVA_HOME=/opt/jdk1.8.0_191
export SCALA_HOME=/opt/scala-2.12.8
export SPARK_HOME=/opt/spark
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:${SCALA_PATH}/bin:${SPARK_HOME}/bin:
export SPARK_MASTER_IP=192.168.1.102  # 注意這裏是你的master的ip哦
export SPARK_WORKER_MEMORY=2g

5、重命名slaves.template文件並添加內容

cp slaves.template slaves
--------------添加以下內容------------------
Master
Slave1
Slave2

6、將配置好的spark文件夾複製到另外兩臺機子上:scp /opt/spark root@Slave1:/opt
7、修改兩臺slave的配置文件/etc/profile,添加spark路徑。同時注意,進入/opt/spark/conf,在spark-env.sh文件中將export SPARK_MASTER_IP=192.168.1.102 改爲:export SPARK_LOCAL_IP=#這裏是相應機子的IP
8、在master啓動集羣:/opt/spark/sbin/start-all.sh
9、查看集羣是否成功啓動:jps
這是在master上的結果,與上面對比,較hadoop多了一個Master:
spark-master-jps
這是在Slave1上的結果,比hadoop多了一個Worker:
spark-slave-jps  
spark集羣的web端口:8080
spark:8080

啓動和關閉hadoop/spark的命令

hadoop/sbin/start-all.sh
spark/sbin/start-master.sh
spark/sbin/start-slaves.sh

spark/sbin/stop-master.sh
spark/sbin/stop-slaves.sh
hadoop/sbin/stop-all.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章