您的位置首页  学习

大数据学习笔记_大数据技术笔记

  • 来源:互联网
  • |
  • 2025-05-16
  • |
  • 0 条评论
  • |
  • |
  • T小字 T大字

1.关于Spark2009年,spark诞生于伯克利大学的amplab。最重要的是,spark只是一个实验项目,只包含很少的代码,属于轻量级框架。2010年,伯克利大学正式启动了Spark项目。2013年6月,Spark成为Apache基金

大数据学习笔记_大数据技术笔记

 

1.关于Spark2009年,spark诞生于伯克利大学的amplab最重要的是,spark只是一个实验项目,只包含很少的代码,属于轻量级框架2010年,伯克利大学正式启动了Spark项目2013年6月,Spark成为Apache基金会的一个项目,并进入了高速开发阶段。

第三方开发人员贡献了大量代码,并且非常活跃2014年2月,Spark被称为Apache的顶级项目与此同时,大数据公司cloudera宣布增加对spark框架的投资,以取代MapReduce2014年4月,大数据公司MAPR进入了Spark阵地。

Apache mahout放弃了MapReduce,将使用spark作为计算引擎2014年5月,发布了Spark 1.0.02015年,Spark在国内IT行业中越来越受欢迎越来越多的公司开始专注于部署或使用Spark取代MR2,hive,storm和其他传统的大数据并行计算框架。

2.什么是Spark?Apache Spark™ 是用于大规模数据处理的统一分析引擎大型数据集的统一分析引擎Spark是基于内存的通用并行计算框架,旨在使数据分析更快Spark包含大数据领域的各种通用计算框架。

Spark Core(离线计算)Sparksql(交互式查询)Spark Streaming(实时计算)Spark mllib(机器学习)Spark graphx(图形计算)3. Spark可以取代Hadoop吗?

不完全正确因为我们只能用火花的核心,而不是MR用于离线计算,数据存储仍取决于HDFSSpark+Hadoop的结合是最流行的组合和最有前途的一个,在未来大数据的领域!​4.Spark的特点速度内存计算比Mr快100倍。

磁盘计算比Mr快10倍以上易于使用提供Java Scala Python R语言的API接口一站式解决方案Spark核心(离线计算)Spark SQL(交互式查询)Spark流式传输(实时计算)…..可以在任何平台上运行

YarnMesosStandalone5.Spark的缺点JVM的内存开销太大,1g的数据通常会消耗5g的内存(tungsten项目试图解决此问题)不同的spark应用程序之间没有有效的共享内存机制(项目Tachyon正在尝试引入分布式内存管理,因此不同的spark应用程序可以共享缓存的数据)

6. Spark与MR6.1 MR的局限性低层次的抽象,需要手工编写代码,很难使用仅提供两个操作,即Map和Reduce,缺少表达式作业只有两个阶段:映射和缩小复杂的计算需要完成大量工作作业之间的依赖关系由开发人员自己管理。

中间结果(reduce的输出)也放置在HDFS文件系统中高延迟,仅适用于批处理数据,并且对交互式数据处理和实时数据处理的支持不足迭代数据处理性能不佳6.2 Spark解决了哪些问题?低层次的抽象,需要手工编写代码,很难使用

在Spark中通过RDD(弹性分布式数据集)进行抽象仅提供两个操作,即map和reduce,缺少表达式火花中提供了许多运算符作业只有两个阶段:map和reduceSpark可能有多个阶段中间结果也在HDFS文件系统上(缓慢)。

如果中间结果在内存中,它将被写入本地磁盘而不是HDFS高延迟,仅适用于批处理数据,并且对交互式数据处理和实时数据处理的支持不足Sparksql和sparkstreaming解决了以上问题迭代数据处理性能不佳。

通过将数据缓存在内存中来提高迭代计算的性能==因此,将Hadoop MapReduce替换为新一代大数据处理平台是技术发展的趋势在新一代的大数据处理平台中,spark是目前得到最广泛认可和支持的7. Spark版本。

spark1.6.3:Scala版本2.10.5spark2.2.0:Scala 2.11.8版本(建议用于新项目)hadoop2.7.58.独立安装spark准备安装软件包spark-2.2.0-bin-hadoop 2.7.tgz

$tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /opt/ $mv spark-2.2.0-bin-hadoop2.7/ spark 修改spark env.sh

export JAVA_HOME=/opt/jdk export SPARK_MASTER_IP=hdp01 export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=4 export SPARK_WORKER_INSTANCES=1 export SPARK_WORKER_MEMORY=2g export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop

配置环境变量 #Configure environment variables for spark export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

启动stand-alone模式的Spark $start-all-spark.sh 查看启动状态 http://hdp01:8080 9.安装spark分布式集群配置spark env.sh[root@hdp01 /opt/spark/conf]

export JAVA_HOME=/opt/jdk #Configure the host of the master export SPARK_MASTER_IP=hdp01 #Configure the port for master host communication export SPARK_MASTER_PORT=7077 #Configure the number of CPU cores used by spark in each worker export SPARK_WORKER_CORES=4 #Configure one worker per host export SPARK_WORKER_INSTANCES=1 #The memory used by worker is 2GB export SPARK_WORKER_MEMORY=2g #Directory in Hadoops configuration file export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop

配置slaves[root@hdp01 /opt/spark/conf] hdp03 hdp04 hdp05 分发Spark[root@hdp01 /opt/spark/conf] $scp -r /opt/spark hdp02:/opt/ $scp -r /opt/spark hdp03:/opt/ $scp -r /opt/spark hdp04:/opt/ $scp -r /opt/spark hdp05:/opt/

分发在hdp01上配置的环境变量$scp -r /etc/profile hdp03:/etc/ [root@hdp01 /] $scp -r /etc/profile hdp02:/etc/ $scp -r /etc/profile hdp03:/etc/ $scp -r /etc/profile hdp04:/etc/ $scp -r /etc/profile hdp05:/etc/

启动Spark[root@hdp01 /] $start-all-spark.sh 10. 配置Spark高可用性集群先停止正在运行的火花集群修改spark env.sh#Note the following two lines #export SPARK_MASTER_IP=hdp01 #export SPARK_MASTER_PORT=7077

添加以下内容$export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER - Dspark.deploy.zookeeper.url=hdp03:2181,hdp04:2181,hdp05:2181 -Dspark.deploy.zookeeper.dir=/spark"

分发修改后的配置$scp /opt/spark/conf/spark-env.sh hdp02:/opt/spark/conf $scp /opt/spark/conf/spark-env.sh hdp03:/opt/spark/conf $scp /opt/spark/conf/spark-env.sh hdp04:/opt/spark/conf $scp /opt/spark/conf/spark-env.sh hdp05:/opt/spark/conf

启动集群[root@hdp01 /] $start-all-spark.sh [root@hdp02 /] $start-master.sh 11.第一个Spark Shell程序 $spark-shell --master spark://hdp01:7077 #Spark shell can specify the resources (total cores, memory used on each work) used by the spark shell application at startup. $spark-shell --master spark://hdp01:7077 --total-executor-cores 6 --executor-memory 1g #If you do not specify to use all cores on each worker by default, and 1G memory on each worker >>>sc.textFile("hdfs://ns1/sparktest/").flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).collect

12.Spark中的角色Master负责接收对已提交工作的请求Master负责安排资源(在worker中启动executor)Worker工作者中的执行者负责执行任务Spark-Submitter ===> Driver

向master提交Spark应用13. Spark提交的一般过程

如果发现任何不正确的地方,或者想分享有关上述主题的更多信息,欢迎反馈。译自developpaper.com

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186