Spark集羣安裝

博主已經安裝好了三臺CentOS機器,且做好了靜態IP,也搭建好了Hadoop集羣及jdk環境,以此爲背景。
如果對以上不懂的,請查看博主之前的博客。

1. 創建目錄,下載安裝包

博主的hadoop,jdk環境都是安裝在/opt/目錄下

1. 創建spark目錄

mkdir spark

2. 下載spark安裝包到spark目錄下

spark下載地址:
http://spark.apache.org/downloads.html
在這裏插入圖片描述
解壓安裝包

tar -xvf spark-2.4.0-bin-hadoop2.7.tgz spark2.4

2. 配置Spark

1. 配置spark-env.sh文件

# 進入conf目錄
cd /opt/spark/spark2.4/conf
# 重命名並修改spark-env.sh.template文件
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
# 在配置文件末尾添加以下內容:
export JAVA_HOME=/opt/java/jdk1.8
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077

退出,保存

2. 配置slaves文件

在conf目錄下
重命名並修改slaves.template文件

mv slaves.template slaves
vi slaves
# 在該文件中添加子節點
slave1
slave2

退出,保存

3. 拷貝配置好的Spark到其他節點上

scp -r spark2.4 slave1:/opt/spark/
scp -r spark2.4 slave2:/opt/spark/

目前是一個master,兩個worker

4. 啓動spark

在master機器上

cd /opt/spark/spark2.4/sbin
./start-all.sh

在master的瀏覽器輸入
http://master:8080
會看到兩個alive的worker
在這裏插入圖片描述

5. 啓動spark shell

在spark2.4/bin目錄下

spark-shell -- master spark://master:7077 --executor-memory 2g --total-executor-core 2

參數說明:
–master spark://master:7077 # 指定master地址
–executor-memory 2g # 指定每個worker可用內存爲2G
–total-executor-cores 2 # 指定整個集羣使用的cup核數爲2個

如果啓動spark shell時沒有指定master地址,也可以正常啓動spark shell和執行shell中的程序,但是是啓動了spark的local模式,該模式僅在本機啓動一個進程,沒有與集羣建立聯繫。
Spark Shell中已經默認將SparkContext類初始化爲對象sc。用戶代碼如果需要用到,則直接應用sc即可。

6. 在spart shell中編寫wordcount程序

1. 編寫一個word.txt

touch word.txt
echo "hello hadoop" >> word.txt
echo "hello spark" >> word.txt
echo "hello java" >> word.txt
echo "hello python" >> word.txt
echo "hello world" >> word.txt

2. 上傳到hdfs

# 先新建一個hdfs目錄
hdfs dfs -mkdir -p /work/data1/input
# 上傳
hdfs dfs -get word.txt /work/data1/input/word.txt

3. 使用scala編程

sc.textFile("hdfs://master:9000/work/data1/word.txt").flatMap(_." ").map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://master:9000/work/data1/output")

說明:
sc是SparkContext # 對象,該對象是提交spark程序的入口
textFile(hdfs://master:9000/work/data1/word.txt) # hdfs中讀取數據
flatMap(.split(" ")) # 按照空格分割,扁平化
map((
,1)) # 將單詞和1組成元祖
reduceByKey(+) # 按照key進行reduce,並將value累加
savaAsTextFile(“hdfs://master:9000/work/data1/output”) # 將結果寫入到hdfs中

4. 查看結果

[root@master Documents]# hdfs dfs -ls /work/data1/output
Found 2 items
-rw-r--r--   3 root supergroup          0 2019-03-02 17:50 /work/data1/output/_SUCCESS
-rw-r--r--   3 root supergroup         61 2019-03-02 17:50 /work/data1/output/part-00000

[root@master Documents]# hdfs dfs -text /work/data1/output/p*
(spark,1)
(hadoop,1)
(python,1)
(hello,5)
(hdfs,1)
(world,1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章