点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
Hadoop(已更完)
HDFS(已更完)
MapReduce(已更完)
Hive(已更完)
Flume(已更完)
Sqoop(已更完)
Zookeeper(已更完)
HBase(已更完)
Redis (已更完)
Kafka(已更完)
Spark(正在更新!)
章节内容
上节我们完成了:
Spark 简单介绍
Spark 的特点
Spark 与 Hadoop MapReduce 框架对比
Spark的系统架构
Spark的部署模式
Spark简介
上节我们已经介绍过了,这里为了保持完整性,简单的再扩展介绍一下。
Spark(Apache Spark)是一个快速、通用的分布式数据处理框架,旨在以高效的方式进行大规模数据的处理和分析。它最初由加利福尼亚大学伯克利分校AMPLab开发,并在2010年开源。如今,Spark已经成为大数据处理领域的重要工具之一,广泛应用于许多行业。
Spark凭借其速度、通用性和易用性,成为大数据处理领域的一项关键技术。无论是处理批量数据还是实时数据,亦或是进行机器学习和图计算,Spark都提供了强大的支持。如果你在寻找一个高效的大数据处理框架,Spark无疑是一个值得考虑的选择。
核心特性
速度:Spark的一个显著特性是速度。它利用内存中的数据处理能力,相比于基于磁盘的Hadoop MapReduce,Spark可以在某些情况下快上100倍。此外,Spark支持内存和磁盘混合计算,在内存不足时将数据部分存储在磁盘中,以确保任务的顺利执行。
通用性:Spark提供了丰富的API,可以用Java、Scala、Python和R语言编写程序。它支持多种大数据处理任务,包括批处理、交互式查询、实时流处理、机器学习和图计算等。这些特性使得Spark成为一个非常灵活的工具,适用于各种数据处理需求。
易用性:Spark的编程模型简单且高效,它基于“弹性分布式数据集”(RDD)的概念,允许开发者以函数式编程的风格来处理数据集。对于已经熟悉Hadoop的开发者来说,Spark的学习曲线较为平滑。此外,Spark SQL模块提供了类似于SQL的查询接口,方便数据分析人员使用。
扩展性:Spark被设计为可以处理大规模数据集,支持从单节点运行到大规模集群上运行。它可以通过YARN、Mesos、Kubernetes等资源管理器进行集群资源调度,具备良好的扩展性,能够在大规模集群环境中高效工作。
Spark的组件
Spark Core:这是Spark的核心模块,负责内存管理、任务调度、错误恢复、与存储系统的交互等基础功能。Spark Core引入了RDD,这是一种容错的分布式数据集合,能够高效地进行并行计算。
Spark SQL:这个组件使得结构化数据的处理更加简单。它支持使用SQL语句对数据进行查询,同时可以与Spark的其他模块无缝集成。此外,Spark SQL还支持与Hive兼容,能够读取Hive中的数据。
Spark Streaming:该模块用于处理实时数据流。它将实时数据划分为多个小批次,并使用Spark的核心API对每个批次的数据进行处理。这种微批处理方式使得实时处理更加简洁和高效。
MLlib:这是Spark的机器学习库,提供了各种机器学习算法,如分类、回归、聚类、协同过滤等。此外,它还提供了数据处理、特征工程和模型评估等工具,能够帮助开发者快速构建和部署机器学习模型。
GraphX:用于图计算的模块,提供了图操作和一套用于图并行计算的API,支持图的遍历、路径搜索、连接组件、PageRank等操作。
使用场景
Spark广泛应用于各种需要大规模数据处理的场景,包括但不限于:
批处理:处理大量历史数据,如日志分析、ETL操作。
流处理:实时数据分析和处理,如网络监控、实时推荐系统。
机器学习:大规模数据上的机器学习任务,如推荐系统、文本分类。
交互式查询:通过Spark SQL对大数据集进行快速查询和分析。
图计算:处理社交网络、推荐系统中的复杂图结构数据。
下载文件
我们到官方地址下载:
https://archive.apache.org/dist/spark/
页面如下,为了保证稳定和学习的方便,我用了比较老的版本:2.4.5
我们选择:without-hadoop-scala 这种版本,可以不用安装配置 Scala:
https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-without-hadoop-scala-
解压配置
我们可以使用 wget 或者其他工具来完成文件的下载,我这里是传到服务器上:
cd /opt/software/ wget https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-without-hadoop-scala-2.12.tgz
下载完成后,我们进行解压并移动到指定位置:
cd /opt/software/ tar zxvf spark-2.4.5-bin-without-hadoop-scala-2.12.tgz
移动目录到servers下(之前的规范):
mv spark-2.4.5-bin-without-hadoop-scala-2.12 ../servers
环境变量
vim /etc/profile # spark export SPARK_HOME=/opt/servers/spark-2.4.5-bin-without-hadoop-scala-2.12 export PATH=$PATH:$SPARK_HOME/bin
配置完的结果,记得刷新环境变量
修改配置
cd $SPARK_HOME/conf
slaves
mv slaves.template slaves vim slaves # 集群地址 h121.wzk.icu h122.wzk.icu h123.wzk.icu
配置完的样子大概如下:
spark-defaults
mv spark-defaults.conf.template spark-defaults.conf vim spark-defaults.conf # 修改配置的信息 spark.master spark://h121.wzk.icu:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs://h121.wzk.icu:9000/spark-eventLog spark.serializer org.apache.spark.serializer.KryoSerializer spark.driver.memory 512m
配置完的结果如下图:
创建HDFS目录
hdfs dfs -mkdir /spark-eventLog • 1
spark-env
mv spark-env.sh.template spark-env.sh vim spark-env.sh # 修改如下的配置内容 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export HADOOP_HOME=/opt/servers/hadoop-2.9.2 export HADOOP_CONF_DIR==/opt/servers/hadoop-2.9.2/etc/hadoop export SPARK_DIST_CLASSPATH=$(/opt/servers/hadoop-2.9.2/bin/hadoop classpath) export SPARK_MASTER_HOST=h121.wzk.icu export SPARK_MASTER_PORT=7077
配置完成截图如下:
分发软件
传输文件
使用我们之前编写的 rsync-script 工具。当然你也可以每台都配置一次也行,只要保证环境一致即可。
(之前Hadoop等都使用过,如果你没有,你可以用复制或者别的方式)rsync-script /opt/servers/spark-2.4.5-bin-without-hadoop-scala-2.12
过程会很漫长,请耐心等待:
文件传输分发完毕:
环境变量
每天机器都需要配置环境变量!!!
/etc/profile
h122 服务器
h123 服务器