docker下,极速搭建spark集群(含hdfs集群)

准备实战数据

  1. 登录CentOS7电脑,在刚才执行命令的目录下,发现多了几个文件夹,如下所示,注意input_files和jars这两个,稍后会用到:

[root@hedy 009]# ls -al

总用量 8

drwxr-xr-x. 6 root root 105 2月 10 00:47 .

drwxr-xr-x. 10 root root 94 2月 10 00:47 …

drwxr-xr-x. 4 root root 34 2月 10 00:47 conf

drwxr-xr-x. 2 root root 6 2月 10 00:47 data

-rw-r–r–. 1 root root 3046 2月 10 00:47 docker-compose.yml

-rw-r–r–. 1 root root 1189 2月 10 00:47 hadoop.env

drwxr-xr-x. 2 root root 6 2月 10 00:47 input_files

drwxr-xr-x. 2 root root 6 2月 10 00:47 jars

  1. 稍后的实战是经典的WordCount,也就是将指定文本中的单词出现次数统计出来,因此要先准备一个文本文件,我这里在网上找了个英文版的《乱世佳人》,文件名为GoneWiththeWind.txt,读者您请自行准备一个英文的txt文件,放入input_files文件夹中;

  2. 执行以下命令,即可在hdfs上创建/input文件夹,再将GoneWiththeWind.txt上传到此文件夹中:

docker exec namenode hdfs dfs -mkdir /input \

&& docker exec namenode hdfs dfs -put /input_files/GoneWiththeWind.txt /input

您可能会有疑问:txt文件在宿主机上,hdfs是docker容器,怎么能上传上去呢?您看过docker-compose.yml就会发现,宿主机的input_files目录已经挂载到namenode容器上了,所以上面的命令其实就是将容器内的文件上传到hdfs上去;

4. 用浏览器查看hdfs,如下图,可见txt文件已经上传到hdfs上:

在这里插入图片描述

spark_shell实战WordCount

  1. 在CentOS电脑的命令行输入以下命令,即可创建一个spark_shell:

docker exec -it master spark-shell --executor-memory 512M --total-executor-cores 2

如下所示,已经进入了spark_shell的对话模式:

[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,7571)

(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的内容如下:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)

image

Java面试精选题、架构实战文档

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)

[外链图片转存中…(img-ng85jMfV-1713078313113)]

Java面试精选题、架构实战文档

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值