• Spark学习笔记


    1. SparkSession、SparkContext
      • SparkContext:从Spark2.0开始之后,spark使用全新的SparkSession接口代替Spark1.6的的SQLContext和HiveContext
        • 1 //set up the spark configuration and create contexts
          2  val sparkConf = new SparkConf().setAppName("SparkSessionZipsExample").setMaster("local")
          3  // your handle to SparkContext to access other context like SQLContext
          4  val sc = new SparkContext(sparkConf).set("spark.some.config.option", "some-value")
          5  val sqlContext = new org.apache.spark.sql.SQLContext(sc)
          SparkContext
      • SparkSession:是SparkSQL的入口,Builder是SparkSession的构造器,通过stop函数来停止(SparkConf、SparkContext、SQLContext均封装在其中)
        • Builder:
          • getOrCreate
          • enableHiveSupport
          • appName
          • config
        • Spark.conf.set:设置运行参数
        • 读取元数据:
          • spark.catalog.listDatabases.show(false)
          • spark.catalog.listTables.show(false)
        • 创建DataSet
          • range()
        • 创建DataFrame
          • createDataFrame()
    2. RDD、DataSet、DataSchema
      • DataSet:Dataset<String> logData = spark.read().textFile(logFile).cache();
    3. 集群模式
      • 集群模式

        • standalone
        • Apache Mesos
        • Hadoop Yarn
        • Kubernets
      • 提交应用
        ./bin/spark-submit 
          --class <main-class> (e.g. org.apache.spark.examples.SparkPi--master <master-url> (e.g. spark://23.195.26.187:7077)
          --deploy-mode <deploy-mode> (clusterclient(default))
          --conf <key>=<value> 
          ... # other options
          <application-jar> (hdfs:\ or file:\)
          [application-arguments]
        • Client:
          • 启动master和worker,worker负责整个集群的资源管理,监控自己的CPU、内存并定时向master报告
          • 在client中启动Driver,并向master注册
          • master通过rpc与worker进行通信,通知worker启动一个或多个executor进程
          • executor进程向Driver注册,告知Driver自身的信息,包括所在节点的host等
          • Driver对job进行划分stage,并对stage进行更进一步的划分,将一条pipeline封装成一个task,并向自己注册的executor进程中的task线程中执行
          • 应用程序执行完成,Driver进程退出
        • Cluster:
          • 启动master和worker,worker负责整个集群的资源管理,监控自己的CPU、内存并定时向master报告
          • 客户端提交任务后,ActorSelection(master的actor引用),然后通过ActorSelection给master发送注册Driver请求(RequestSubmitDriver)
          • 客户端提交任务后,master通知worker节点启动driver进程。(worker的选择是随意的,只要worker有足够的资源即可)driver进程启动成功后,将向master返回注册成功信息
          • master通知worker启动executor进程
          • 启动成功后的executor的进程向driver进行注册
          • Driver对job进行划分stage,并对stage进行更进一步的划分,将一条pipeline封装成一个task,并向自己注册的executor进程中的task线程中执行
          • 所有task执行完毕后,程序结束
        • Master URL:
          • local
          • local[K]
          • local[K,F]:K-worker,F-maxFailures
          • local[*]
          • local[*,F]
          • spark://HOST:PORT
          • spark://HOST1:PORT1,HOST2:PORT2;all the masters in HA
          • mesos://HOST:PORT
          • yarn
          • k8s://HOST:PORT
        • Load Configuration:By default, it will read options from conf/spark-default.conf
          • 若需要知道配置文件的来源,可使用--verbose
        • jar包依赖:使用--jar选项的jar包将会自动传输到集群
          • file:绝对路径,file:/URIs存储在driver's HTTP文件服务器,每个executor从driver HTTP服务器获取jar包
          • hdfs:http:https:ftp
          • local:默认每个work节点本地都有该文件
          • jar包清理:yarn自动清理;spark standalone可用spark.worker.cleanup.appDataTtl来配置自动清理
          • --package:添加maven依赖
          • --repositories:附加存储库或SBT解析器
  • 相关阅读:
    安装Manjaro KDE 18.04
    nltk 词性解析
    Ubuntu安装Hadoop
    Ubuntu安装JDK
    Python3-Cookbook总结
    linux 条件变量
    多线程编程 ------ 互斥量
    线程相关笔记
    realloc ------ 扩大malloc得到的内存空间
    gcc 消除未使用变量的警告
  • 原文地址:https://www.cnblogs.com/liudingchao/p/11263525.html
Copyright © 2020-2023  润新知