spark是基于内存的计算引擎,计算速度非常快,仅仅只涉及到数据的计算,没有涉及到数据的存储。
MapReduce的局限性Map结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据任务调度和启动开销大无法充分利用内存不适合迭代计算(如机器学习、图计算等)、交互式处理(数据挖掘)不适合流式处理(点击日志分析)MapReduce的编程不够灵活,仅支持Map和Reduce两种操作 Spark特点
速度快,job的中间结果可以不落地,可以存放在内存中,job以线程方式运行在进程中易用性,可以通过java/scala/python/R开发spark应用程序通用性,可以使用spark sql/spark streaming/mlib/Graphx兼容性,spark程序可以运行在standalone/yarn/mesos spark-submit
spark-submit 可以提交任务到 spark 集群执行,也可以提交到 hadoop 的 yarn 集群执行。
spark-submit --class org.apache.spark.examples.Spark # 应用程序的主类 --master yarn # master 的地址,提交任务到哪里执行 --queue Adhoc # 队列名 --conf spark.submit.deployMode=cluster # 在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client --conf spark.driver.memory=4g # Driver内存,默认 1G --conf spark.executor.memory=4g # 每个 executor 的内存,默认是1G --conf spark.executor.cores=4 # 每个 executor 的核数 --conf spark.sql.shuffle.partitions=2400 --conf spark.executor.instances=400 --conf spark.yarn.maxAppAttempts=1 hdfs://examples/target/scala-2.11/jars/spark-examples.jar # 含有应用的jar包地址 --is-left-parquet "false" # 程序参数



