使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建
先說一下我用的軟件or環境的版本:
VMware14.1.1
Ubuntu16.06.03
jdk1.8.0_161
Scala2.10.5
Python2.12(裝Ubuntu后自帶的)
Spark1.6.1-hadoop2.6
Hadoop2.6.4
步驟:
安裝VMware。傻瓜式安裝,提供兩個激活序列號:FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA、CV7T2-6WY5Q-48EWP-ZXY7X-QGUWD;
安裝Ubuntu,用鏡像安裝,過程也很簡單,無坑。這里只安裝一臺虛擬機,等配好一些環境后,再直接克隆出另外兩臺。我設置第一臺虛擬機的名稱為lch-Ubuntu-1,用戶名為lch;
安裝jdk。去官網下載,默認會下載到“/home/lch/下載”文件夾中,cd到該文件夾,執行以下代碼,接下來,需要配置環境變量,這里先不配,一會一起配:
sudo mkdir /usr/local/java //jdk解壓目錄 sudo tar xvf jdk-8u25-linux-x64.tar.gz -C /usr/local/java //解壓安裝Scala。去官網官網下載,和安裝jdk一樣,新建文件夾,解壓:
sudo mkdir /usr/local/scala sudo tar -zxvf scala-2.12.4.tgz -C /usr/local/scala安裝Spark。去官網下載,注意與Scala版本對應!注意與Scala版本對應!注意與Scala版本對應!重要的事說三遍。當然,我選擇的Spark1.6.1-hadoop2.6和Scala2.10.5是對應的。和上面一樣,兩步,新建文件夾,解壓:
sudo mkdir /usr/local/spark sudo tar -zxvf spark-1.6.1-bin-hadoop2.6.tgz -C /usr/local/spark解壓完成后,開始下一步,配置環境變量;
配置環境變量。先使用以下命令打開環境變量文件:
sudo gedit ~/.bashrc然后,在文件的末尾追加以下代碼:
保存并退出,在終端中輸入以下代碼使修改生效:
source ~/.bashrc接下來,需要測試jdk、scala和spark是否安裝成功;?
測試。首先,使用“java -version”進行對jdk進行測試,終端中出現版本號即可。然后,使用“scala”對scala進行測試,能夠進入scala shell即可。最后,使用“spark-shell”和“pyspark”對spark進行測試,分別出現如下圖中紅框內部分即可;
修改本機名稱。先使用以下命令查詢本機ip。
ifconfig -a然后使用以下命令修改該文件中的本機名稱:
sudo gedit /etc/hostname將其中的lch-Ubuntu-1修改為master,然后執行以下命令:
sudo gedit /etc/hosts將其中的lch-Ubuntu-1修改為master,并添加如下代碼(此時我們還沒有slave,但是克隆出來的slave的ip一般是連號的,記住,不能刪除這個文件里的localhost),然后重啟虛擬機;
192.168.86.128 master 192.168.86.129 slave1 192.168.86.130 slave2安裝SSH。使用以下命令安裝SSH:
sudo apt-get install openssh-server克隆虛擬機。先把虛擬機關機,使用VMware的克隆功能克隆出兩臺Ubuntu,這時,這兩臺新的Ubuntu的本機名應該也叫master,我們使用第8步中的方法(hosts文件不用改,克隆過來了),將兩臺Ubuntu的本機名分別改為slave1和slave2并重啟使其生效;
SSH免密。在三臺Ubuntu的終端中輸入以下命令,一直按回車就行。
ssh-keygen -t rsa然后將slave1與slave2上的id_rsa.pub用scp命令發送給master(注意,這里要將命令中的“lch”改為你對應的用戶名):scp ~/.ssh/id_rsa.pub lch@master:~/.ssh/id_rsa.pub.slave1 scp ~/.ssh/id_rsa.pub lch@master:~/.ssh/id_rsa.pub.slave2在master上,將所有公鑰加到用于認證的公鑰文件authorized_keys中:
現在可以在三臺機器上使用以下命令測試是否可以免密登陸了:
ssh master ssh slave1 ssh slave2安裝hadoop。去官網下載,然后新建文件夾、解壓:
sudo mkdir /usr/local/hadoop sudo tar -zxvf hadoop-2.6.4.tar.gz -C /usr/local/hadoop進入“/usr/local/hadoop/hadoop-2.6.4/etc/hadoop”目錄,對以下文件進行配置:
//hadoop-env.sh export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165//yarn-env.sh export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165//slaves(把文件里的localhost刪掉) slave1 slave2core-site.xml(自行設計路徑,文件夾需要自己手動創建) <configuration><property><name>fs.defaultFS</name><value>hdfs://master:9000/</value></property><property><name>hadoop.tmp.dir</name><value>file:/home/lch/hadoop264/tmp</value></property> </configuration>hdfs-site.xml(自行設計路徑,文件夾需要自己手動創建) <configuration><property><name>dfs.namenode.secondary.http-address</name><value>master:9001</value></property><property><name>dfs.namenode.name.dir</name><value>file:/home/lch/hadoop264/namenode</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/lch/hadoop264/datanode</value></property><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property> </configuration>mapred-site.xml(不用改) <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> </configuration>yarn-site.xml(不用改) <configuration><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:8035</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>在兩臺slave中創建和master一致的hadoop文件夾,并在三臺機器中均使用以下命令進行文件夾的權限設置:
sudo chmod -R 777 /usr/local/hadoop此時可以將配置好的hadoop-2.6.4文件夾分發給所有slave了:
scp -r /usr/local/hadoop/hadoop-2.6.4 lch@slave1:/usr/local/hadoop/ scp -r /usr/local/hadoop/hadoop-2.6.4 lch@slave2:/usr/local/hadoop/分發完成后,再次在兩臺slave中對hadoop文件夾進行權限設置:
sudo chmod -R 777 /usr/local/hadoop使用cd命令切換到hadoop主目錄,格式化namenode后,啟動:
./bin/hadoop namenode -format ./sbin/start-all.sh在三臺機器的終端中分別輸入jps命令(下圖是master和slave1,slave2和slave1是一樣的),看到如下圖即代表啟動成功,可以使用“./sbin/stop-all.sh”進行關閉;
再次配置spark。先使用如下命令將兩臺slave中的spark文件刪除(一會再從master傳過來):
sudo rm -rf /usr/local/spark/spark-1.6.1-bin-hadoop2.6然后,在master上cd到spark的根目錄下的conf目錄中,修改以下文件(沒有該文件則新建該文件):
//spark-env.sh export SCALA_HOME=/usr/local/scala/scala-2.10.5 export JAVA_HOME=/usr/local/java/jdk1.8.0_161 export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.4 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export SPARK_MASTER_IP=master export MASTER=spark://192.168.86.128:7077 export SPARK_LOCAL_DIRS=/usr/local/spark/spark-1.6.1-bin-hadoop2.6 export SPARK_DRIVER_MEMORY=512M//slaves(把文件中自帶的localhost刪除) master slave1 slave2同樣的,在三臺機器上使用chmod命令給文件夾賦予權限:
sudo chmod -R 777 /usr/local/spark此時可以將配置好的spark-1.6.1-bin-hadoop2.6文件夾分發給所有slave了:
scp -r /usr/local/spark/spark-1.6.1-bin-hadoop2.6 lch@slave1:/usr/local/spark/ scp -r /usr/local/spark/spark-1.6.1-bin-hadoop2.6 lch@slave2:/usr/local/spark/在兩臺slave中再次對文件夾賦予權限:
sudo chmod -R 777 /usr/local/spark此時,配置已完成,使用cd命令切換到spark主目錄,進行啟動:
在三臺機器的終端中分別輸入jps命令(圖示是master和slave1),看到如下圖即代表啟動成功,可以使用“./sbin/stop-all.sh”進行關閉;
集群測試。在spark啟動成功后,在master的終端中cd到spark根目錄,執行以下代碼(spark自帶的一個例子),出現結果即為成功:
./bin/run-example org.apache.spark.examples.SparkPi下面是我裝的過程中碰到的坑及解決辦法(其實我已經把正解都寫在安裝過程中,所以這里只有下面提到的一個坑),解決辦法轉自一個博客,若侵則刪:
附上幾個我也不知道是干嘛的代碼(也是我嘗試用來解決上述問題用的):
chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow:简单的卷积层、池化
- 下一篇: 如何在Windows7下删除Ubuntu