栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker下,极速搭建spark集群(含hdfs集群),面试真题解析

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker下,极速搭建spark集群(含hdfs集群),面试真题解析

[root@hedy ~]# docker exec -it master spark-shell --executor-memory 512M --total-executor-cores 2

2019-02-09 17:13:44 WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

Setting default log level to “WARN”.

To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).

Spark context Web UI available at http://localhost:4040

Spark context available as ‘sc’ (master = spark://master:7077, app id = app-20190209171354-0000).

Spark session available as ‘spark’.

Welcome to


/ / ___ ___/ /

/ _ / _ `/ __/ '/

// ./_,// //_ version 2.3.0

/_/

Using Scala version 2.11.8 (Java HotSpot™ 64-Bit Server VM, Java 1.8.0_131)

Type in expressions to have them evaluated.

Type :help for more information.

scala>

  1. 继续输入以下命令,也就是scala版的WordCount:

sc.textFile(“hdfs://namenode:8020/input/GoneWiththeWind.txt”).flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + ).sortBy(._2,false).take(10).foreach(println)

  1. 稍后控制台就会输出整个txt中出现次数最多的十个单词,以及对应的出现次数,如下:

scala> sc.textFile(“hdfs://namenode:8020/input/GoneWiththeWind.txt”).flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + ).sortBy(._2,false).take(10).foreach(println)

(the,18264)

(and,14150)

(to,10020)

(of,8615)

(a,

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

(her,7086)

(she,6217)

(was,5912)

(in,5751)

(had,4502)

scala>

  1. 用浏览器查看spark,如下图,可见任务正在执行中(因为shell还没有退出),地址是:[http://192.168.1.101:8080](

)

  1. 输入Ctrl+c,退出shell,释放资源;

至此,spark_shell的实战就完成了,如果您是位java开发者,请接着往下看,咱们一起来实战java版spark应用的提交运行;

[](

)java实战WordCount

关于接下来的java版的WordCount,本文直接将jar下载下来用,而这个jar对应的源码以及开发过程,请参考文章[《第一个spark应用开发详解(java版)》](

)

  1. 在docker-compose.yml文件所在目录下,有个jars目录,进入此目录执行以下命令,就会将实战用到的jar文件下载到jars目录:

wget https://raw.githubusercontent.com/zq2599/blog_demos/master/sparkdockercomposefiles/sparkwordcount-1.0-SNAPSHOT.jar

  1. 执行以下命令,即可向spark提交java应用执行:

docker exec -it master spark-submit

–class com.bolingcavalry.sparkwordcount.WordCount

–executor-memory 512m

–total-executor-cores 2

/root/jars/sparkwordcount-1.0-SNAPSHOT.jar

namenode

8020

GoneWiththeWind.txt

  1. 任务执行过程中,控制台会输出大量信息,其中有类似以下的内容,就是统计结果:

2019-02-09 17:30:32 INFO WordCount:90 - top 10 word :

the 18264

and 14150

to 10020

of 8615

a 7571

her 7086

she 6217

was 5912

in 5751

had 4502

  1. 用浏览器查看hdfs,如下图,可见/output目录下创建了一个子文件夹20190209173023,这个文件夹下有两个文件,其中名为part-00000的就是本次实战输出的结果:

  1. 在hdfs的网页上看见/output目录下的子文件夹名称为20190209173023,因此执行以下命令,即可在控制台看到part-00000文件的内容:

docker exec namenode hdfs dfs -cat /output/20190209173023/part-00000

看到的part-00000的内容如下:

[root@hedy jars]# docker exec namenode hdfs dfs -cat /output/20190209173023/part-00000

(18264,the)

(14150,and)

(10020,to)

(8615,of)

(7571,a)

(7086,her)

(6217,she)

(5912,was)

(5751,in)

(4502,had)

以上就是极速搭建spark集群的实战,虽然操作简单,但是整个环境存在以下几处瑕疵:

  1. 只有一个worker,并行执行能力较差;

  2. hdfs容器的磁盘空间是在docker的安装路径下分配的,遇到大文件时容器将系统空间占满;

  3. spark master的4040端口没有开放,无法观察应用运行的情况;

  4. worker的8080端口都没有开放, 无法观察worker的运行情况,也不能查看业务运行日志;

针对上述问题,我对docker-compose.yml做了改进,您可以执行以下命令快速搭建整个集群环境,要注意的是下面的命令会启动6个worker,比较消耗内存,如果您的电脑内存低于10G,很可能启动容器失败,此时建议您打开docker-compose.yml文件,对worker的配置做适当删减:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号