Spark系列修炼---入门笔记5


核心内容:
1、Spark集群搭建与测试
2、粗粒度与细粒度的相关概念


今天学习了Spark的集群搭建,并进行了相应的测试工作,现将具体的过程进行整理:
在搭建Spark集群之前,我在6台服务器上面已经将Hadoop集群搭建完成,集群角色分布如下所示:
这里写图片描述
集群DataNode情况:

Datanodes available: 4 (4 total, 0 dead)

Live datanodes:
Name: 10.187.84.53:50010 (hadoop44)
Hostname: hadoop44
Decommission Status : Normal
Configured Capacity: 52844687360 (49.22 GB)
DFS Used: 6135365632 (5.71 GB)
Non DFS Used: 7358754816 (6.85 GB)
DFS Remaining: 39350566912 (36.65 GB)
DFS Used%: 11.61%
DFS Remaining%: 74.46%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Last contact: Tue Nov 15 21:33:16 CST 2016


Name: 10.187.84.55:50010 (hadoop66)
Hostname: hadoop66
Decommission Status : Normal
Configured Capacity: 52844687360 (49.22 GB)
DFS Used: 7938138112 (7.39 GB)
Non DFS Used: 9813864448 (9.14 GB)
DFS Remaining: 35092684800 (32.68 GB)
DFS Used%: 15.02%
DFS Remaining%: 66.41%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Last contact: Tue Nov 15 21:33:15 CST 2016


Name: 10.187.84.54:50010 (hadoop55)
Hostname: hadoop55
Decommission Status : Normal
Configured Capacity: 52844687360 (49.22 GB)
DFS Used: 5711171584 (5.32 GB)
Non DFS Used: 7270424576 (6.77 GB)
DFS Remaining: 39863091200 (37.13 GB)
DFS Used%: 10.81%
DFS Remaining%: 75.43%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Last contact: Tue Nov 15 21:33:16 CST 2016


Name: 10.187.84.52:50010 (hadoop33)
Hostname: hadoop33
Decommission Status : Normal
Configured Capacity: 52844687360 (49.22 GB)
DFS Used: 4032651264 (3.76 GB)
Non DFS Used: 7934386176 (7.39 GB)
DFS Remaining: 40877649920 (38.07 GB)
DFS Used%: 7.63%
DFS Remaining%: 77.35%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Last contact: Tue Nov 15 21:33:16 CST 2016

从上面中可以看出,Hadoop集群已经成功搭建完成,接下来介绍Spark软件的具体的下载过程:
这里写图片描述
Spark官网地址:http://spark.apache.org/
这里写图片描述
现在我已经下载好了,百度云盘地址:http://pan.baidu.com/s/1i5bkZGD
接下来具体介绍spark的在Linux上的安装过程:


1、解压缩、重命名、修改环境变量
这里写图片描述
2、修改配置文件

spark-env.sh

export SCALA_HOME=/usr/local/scala
export JAVA_HOME=/home/hadoop/jdk1.7.0_25x64
export HADOOP_HOME=/usr/local/hadoop
export SPARK_MASTER_IP=10.187.84.50
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

相应说明:
JAVA_HOME 指定 Java 安装目录;
SCALA_HOME 指定 Scala 安装目录;
HADOOP_HOME指定Hadoop的安装目录;
SPARK_MASTER_IP 指定 Spark 集群中 Master 节点的 IP 地址;
SPARK_WORKER_MEMORY 指定的是 Worker 节点能够分配给 Executors 的最大内存大小;
HADOOP_CONF_DIR 指定 Hadoop 集群配置文件目录(Spark运行在YARN集群上必须)

slaves

hadoop33
hadoop44
hadoop55
hadoop66

spark-defaults.conf 该配置文件可以记录程序运行时的相关信息

spark.master                       spark://hadoop11:7077
spark.eventLog.enabled             true
# Namenode
spark.eventLog.dir                 hdfs://hadoop11:9000/sparkHistoryLogs
# Master
spark.history.fs.logDirectory      hdfs://hadoop11:9000/sparkHistoryLogs
spark.executor.extraJavaOptions    -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

到此,Spark集群配置完成,是不是非常简单,接下来启动Spark集群:

[root@hadoop11 ~]# start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadoop11.out
hadoop66: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop66.out
hadoop33: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop33.out
hadoop55: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop55.out
hadoop44: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop44.out

接下来启动start-history-server.sh 在主节点上面启动就可以

[root@hadoop11 conf]# jps
36094 HistoryServer
19114 SecondaryNameNode
35706 Master
18928 NameNode
36244 Jps

可以看出,集群已经正常启动。
通过8080端口查看集群启动情况:
这里写图片描述
通过18080查看spark日记记录:
这里写图片描述
接下来进行集群功能测试:
先查看HDFS中的文件:

[root@hadoop11 mydata]# hadoop fs -cat /word.txt
hello you
spark hadoop
java scala
java hello

启动spark-shell:
这里写图片描述
运行命令:

scala> sc.textFile("hdfs://hadoop11:9000/word.txt").flatMap(_.split(" ")).map(word =>(word,1)).reduceByKey(_+_).map(pair => (pair._2,pair._1)).sortByKey(false,1).map(pair=>(pair._2,pair._1)).saveAsTextFile("hdfs://hadoop11:9000/dirout/")

查看运行结果:

[root@hadoop11 mydata]# hadoop fs -lsr /dirout/
lsr: DEPRECATED: Please use 'ls -R' instead.
-rw-r--r--   3 root supergroup          0 2016-11-15 21:55 /dirout/_SUCCESS
-rw-r--r--   3 root supergroup         58 2016-11-15 21:55 /dirout/part-00000
[root@hadoop11 mydata]# hadoop fs -cat /dirout/part-00000
(hello,2)
(java,2)
(scala,1)
(spark,1)
(you,1)
(hadoop,1)

接下来我们通过spark-shell提交程序:

[root@hadoop11 lib]# spark-submit --class org.apache.spark.examples.SparkPi             --master spark://hadoop11:7077  spark-examples-1.6.0-hadoop2.4.0.jar

运行结果:
这里写图片描述
接下来谈一下粗粒度和细粒度的相关概念:
粗粒度:在任务启动初始化的那一刻就分配好资源了,后续程度启动的时候直接使用资源计算就可以了,而不用每次任务计算的时候在分配资源。
细粒度:就是任务在计算的那一刻需要资源的时候在给你分配,然后计算完成后在将给你的资源进行回收。
简单来说,粗粒度就是先分配资源,而细粒度就是在计算的时候在分配资源。
粗粒度的好处与缺点:如果作业特别多,并且要进行资源复用的话,此时就特别适合粗粒度,坏处是计算资源的浪费。
细粒度不存在资源浪费的问题,但启动会有麻烦。
OK,明天继续努力!

### 回答1: Spark SQL是Spark中用于处理结构化数据的模块。它提供了一种基于DataFrame和SQL的编程接口,可以方便地进行数据分析和处理。Spark SQL支持多种数据源,包括Hive、JSON、Parquet等,可以通过SQL语句或DataFrame API进行数据查询和操作。Spark SQL还支持用户自定义函数(UDF)和聚合函数(UDAF),可以满足更复杂的数据处理需求。Spark SQL的优势在于它可以与Spark的其他模块无缝集成,如Spark Streaming、MLlib等,可以构建完整的数据处理和分析流程。 ### 回答2: 本篇笔记主要是介绍Spark SQL的基本概念和编程模型。 Spark SQL是面向Spark计算引擎的一种高性能的分布式数据处理技术,它提供一种基本的高度抽象的编程模型,使得开发大规模的数据仓库和数据分析应用变得容易和高效。 Spark SQL最核心的概念就是DataFrames,DataFrame是RDD的超集,提供了更高层次的抽象和对数据的结构化的处理能力,在数据处理的过程中常常会用到一些基本的操作:过滤、选择、聚合、排序等等,而这些操作都可以一步一步地以DataFrame为基础完成。 在使用Spark SQL的过程中,可以通过DataFrame API和Spark SQL语言两种方式进行编程。DataFrame API是Spark SQL提供的一种编程API,它提供了常见的操作,如选择、过滤和聚合等。而Spark SQL语言则是一种基于SQL的编程语言,和传统的SQL查询语言类似,可以通过SQL查询语句来对数据进行查询和操作。Spark SQL可以支持多种数据源,包括JSON、Parquet、ORC、Hive、JDBC等等,因此可以轻松地读取和处理不同类型的数据源。 Spark SQL还提供了高级的功能,如User-Defined Functions(UDFs)、Window Functions和Structured Streaming等等。UDFs允许开发者自定义函数并在Spark SQL中使用,将SQL和代码结合起来,提高了处理数据的灵活性和可扩展性;Window Functions则是一种用来进行滑动窗口操作的函数,常常用于计算数据的局部或全局统计量;Structured Streaming提供了数据流处理的能力,并且实现了端到端的Exactly-Once语义。 总之,Spark SQL提供了很多的功能和便利,特别是在大数据处理和分析领域,它的优势尤为突出。结合Spark的强大计算能力和Spark SQL的抽象编程模型,在大规模的数据分析和仓库方面都具有非常高的可扩展性和灵活性。 ### 回答3: Spark SQL是Spark生态系统中的一个组件,它负责处理结构化数据。它提供了SQL查询和DataFrame API,可以从不同的数据源中读取和处理数据。Spark SQL能够理解SQL语言,这使得开发人员可以使用传统的SQL查询方式来处理数据,同时还可以利用Spark的优势,例如分布式计算和内存缓存。 Spark SQL支持许多不同类型的数据源,包括Hive表、传统的RDD、Parquet文件、JSON文件、CSV文件和JDBC数据源等。Spark SQL可以通过使用数据源API将这些数据源加载到Spark中,然后可以在Spark中处理和查询这些数据。 Spark SQL还支持特定于数据源的优化器和执行引擎,这允许Spark SQL针对不同的数据源执行优化操作。例如,使用Hive数据源时,Spark SQL会使用Hive的元数据来优化查询计划。当使用Parquet文件格式时,Spark SQL会使用Parquet文件中的元数据来优化查询计划。 在Spark SQL中,DataFrame是一种非常重要的概念。它是一种强类型的分布式数据集,可以使用DataFrame API进行操作。DataFrame API是一种更面向数据的API,例如过滤数据、聚合数据等。Spark SQL中的DataFrame可以看作是类似于表的对象,它可以和Spark SQL中的SQL查询混合使用。 除了DataFrame API和SQL查询,Spark SQL还支持UDF(用户自定义函数)。UDF允许用户在SQL查询或DataFrame API中定义自己的函数,以实现更复杂的数据操作。使用UDF时,用户可以使用累加器和广播变量等Spark的分布式计算功能,使得UDF具备高性能和可伸缩性。 总之,Spark SQL是大数据处理领域中一种非常方便和强大的处理结构化数据的工具。它可以方便地与其他Spark组件结合使用,例如Spark Streaming、Spark MLlib等。使用Spark SQL,开发人员可以在不同的数据源之间轻松地查询和转换数据,并利用Spark分布式计算的优势,实现高性能和可伸缩性的数据处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只懒得睁眼的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值