精华内容
下载资源
问答
  • Spark core优化配置参数

    千次阅读 2018-06-08 12:30:27
    Spark core优化配置参数 应用属性 描述 spark.driver.cores 在集群模式下管理资源时,用于driver程序的CPU内核数量。默认为1。在生产环境的硬件上,这个值可能最少要上调到8或16。 spark.driver....

    Spark core优化配置参数

    应用属性 描述
    spark.driver.cores 在集群模式下管理资源时,用于driver程序的CPU内核数量。默认为1。在生产环境的硬件上,这个值可能最少要上调到8或16。
    spark.driver.maxResultSize 如果应用频繁用此driver程序,建议对这个值的设置高于其默认值“1g”。0表示没有限制。这个值反映了Spark action的全部分区中最大的结果集的大小。
    spark.driver.memony driver进程使用的总内存数。和内核数一样,建议根据你的应用及硬件情况,把这个值设置为“16g”或“32g”。默认”1g”。
    spark.executor.memory 每个executor进程所使用的内存数。默认值为“1g”。根据集群的硬件情况,应该把这个值设置为“4g”、“8g”、“16g”或者更高。
    spark.local.dir 这是Spark原生写本地文件,包括在磁盘上存储RDD的地方。默认是/tmp。强烈推荐把它设置在快速存储(首选SSD)上,分配大量的空间。在序列化对象到磁盘时,就会落入这个位置,如果这个路径下没有空间,将会出现不确定的行为

    运行时环境参数

    应用属性 描述
    spark.executor.logs.rolling.* 有四个属性用于设定及维护spark日志的滚动。当spark应用长周期运行时(超过24小时),应该设置这个属性
    spark.python.worker.memory 如果使用python开发spark应用,这个属性将为每个python worker进程分配总内存数。默认值512m

    shuffle行为参数

    应用参数 描述
    spark.shuffle.manager 这是Spark里shuffle数据的实现方法,默认为“sort”。这里提到它是因为,如果应用使用Tungsten,应该把这个属性值设置为“Tungsten-sort”。
    spark.shuffle.memoryFraction 这个是shuffle操作溢写到磁盘时java堆占总内存的比例。默认值为0.2。如果该应用经常溢出,或者多个shuffle操作同时发生,应该把这个值设置的更高。通常。可以从0.2升到0.4,然后再到0.6,确保一切保持稳定。这个值建议不要超过0.6,否则它可能会碍事,与其他对象竞争堆空间
    spark.shuffle.service.enabled 在Spark内开启外部的shuffle服务。如果需要调度动态分配,就必须设置这个属性。默认为false

    压缩及序列化参数

    应用属性 描述
    spark.kryo.classToRegister 当使用Kryo做对象序列化时,需要注册这些类。对于Kryo将序列化的应用所用的所有自定义对象,必须设置这些属性
    spark.kryo.register 当自定义类需要扩展“KryoRegister”类接口时,用它代替上面的属性。
    spark.rdd.compress 设置是否应当压缩序列化的RDD,默认false。但是和前面说过的一样,如果硬件充足,应该启用这个功能,因为这时的CPU性能损失可以忽略不计
    spark.serializer 如果设置这个值,将使用Kryo序列化,而不是使用java的默认序列化方法。强烈推荐配置成Kryo序列化,因为这样可以获得最佳的性能,并改善程序的稳定性

    执行行为参数

    应用属性 描述
    spark.cleaner.ttl Spark记录任何对象的元数据的持续时间(按照秒来计算)。默认值设为“infinite”(无限),对长时间运行的job来说,可能会造成内存泄漏。适当地进行调整,最好先设置为3600,然后监控性能。
    spark.executor.cores 每个executor的CPU核数。这个默认值基于选择的资源调度器。如果使用YARN或者Standalone集群模式,应该调整这个值

    网络参数

    应用属性 描述
    spark.akka.frameSize Spark集群通信中最大消息的大小。当程序在带有上千个map及reduce任务的大数据集上运行时,应该把这个值从128调为512,或者更高。
    spark.akka.threads 用于通信的Akka的线程数。对于运行多核的driver应用,推荐将这个属性值从4提高为16、32或更高

    调度参数

    应用属性 描述
    spark.cores.max 设置应用程序从集群所有节点请求的最大CPU内核数。如果程序在资源有限的环境下运行,应该把这个属性设置最大为集群中spark可用的CPU核数
    展开全文
  • Spark 常用配置项与优化配置

    万次阅读 2015-03-12 22:01:38
    Spark 常用配置项与优化配置项 1、配置加载顺序: SparkConf方式 > 命令行参数方式 >文件配置方式。 应用程序SparkConf 优先级高 2.spark 常用配置详解 1 节点说明 IP Role 192.168.1.111...
    Spark 常用配置项与优化配置项

    1、配置加载顺序:
    SparkConf方式 > 命令行参数方式 >文件配置方式。

    应用程序SparkConf 优先级高


    2.spark 常用配置详解
    1 节点说明
    IP

    Role

    192.168.1.111

    ActiveNameNode

    192.168.1.112

    StandbyNameNode,Master,Worker

    192.168.1.113

    DataNode,Master,Worker

    192.168.1.114

    DataNode,Worker

    HDFS集群和Spark集群之间节点共用。
    2 安装HDFS
    见HDFS2.X和Hive的安装部署文档:
    http://www.cnblogs.com/Scott007/p/3614960.html 
    3 Spark部署
    Spark常用的安装部署模式有Spark On Yarn和Standalone,可以同时使用。
    3.1 Spark on Yarn
    这种模式,借助Yarn资源分配的功能,使用Spark客户端来向Yarn提交任务运行。只需将Spark的部署包放置到Yarn集群的某个节点上即可(或者是Yarn的客户端,能读取到Yarn集群的配置文件即可)。Spark本身的Worker节点、Master节点不需要启动。

    但是,Spark的部署包须是基于对应的Yarn版本正确编译后的,否则会出现Spark和Yarn的兼容性问题。

    on Yarn的两种运行方式,其运行结束后的日志不能在Yarn的Application管理界面看到,目前只能在客户端通过:

    yarn logs -applicationId <applicationId>

    命令查看每个Application的日志。
    3.1.1 配置
    部署这种模式,需要修改conf目录下的spark-env.sh文件。在其中新增如下配置选项:

    export HADOOP_HOME= /home/hadoop/hadoop-2.0.0-cdh4.5.0export HADOOP_CONF_DIR= $HADOOP_HOME/etc/hadoopSPARK_EXECUTOR_INSTANCES=2SPARK_EXECUTOR_CORES=1SPARK_EXECUTOR_MEMORY=400MSPARK_DRIVER_MEMORY=400MSPARK_YARN_APP_NAME="Spark 1.0.0"

    其中:

    (1) HADOOP_HOME:当前节点中HDFS的部署路径,因为Spark需要和HDFS中的节点在一起;

    (2) HADOOP_CONF_DIR:HDFS节点中的conf配置文件路径,正常情况下此目录为$HADOOP_HOME/etc/hadoop;

    (3) SPARK_EXECUTOR_INSTANCES:在Yarn集群中启动的Worker的数目,默认为2个;

    (4) SPARK_EXECUTOR_CORES:每个Worker所占用的CPU核的数目;

    (5) SPARK_EXECUTOR_MEMORY:每个Worker所占用的内存大小;

    (6) SPARK_DRIVER_MEMORY:Spark应用程序Application所占的内存大小,这里的Driver对应Yarn中的ApplicationMaster;

    (7) SPARK_YARN_APP_NAME:Spark Application在Yarn中的名字;

    配置完成后,将Spark部署文件放置到Yarn的节点中即可。这里,将spark-1.0.0整个目录放到Yarn集群的一个节点192.168.1.112的/home/hadoop(设为spark的安装路径的父目录)路径下。

    3.1.2 测试
    在Spark的部署路径的bin路径下,执行spark-submit脚本来运行spark-examples包中的例子。执行如下:

    ./bin/spark-submit --master yarn \--class org.apache.spark.examples.JavaWordCount \--executor-memory 400M \--driver-memory 400M \/home/hadoop/spark-1.0.0/examples/target/scala-2.10/spark-examples-1.0.0-hadoop2.0.0-cdh4.5.0.jar ./hdfs-site.xml

    这个例子是计算WordCount的,例子被打包在/home/hadoop/spark-1.0.0/examples/target/scala-2.10/spark-examples-1.0.0-hadoop2.0.0-cdh4.5.0.jar包中,对应的Class为org.apache.spark.examples.JavaWordCount,./hdfs-site.xml是HDFS中指定路径下的一个文件,WordCount就是针对它来做的。而--master yarn就是指定运行在Yarn集群中,以yarn模式运行。

    Spark On Yarn有两种运行模式,一种是Yarn Cluster方式,一种是Yarn Client方式。

    (1) Yarn Cluster: Spark Driver程序将作为一个ApplicationMaster在YARN集群中先启动,然后再由ApplicationMaster向RM申请资源启动executor以运行Task。因为Driver程序在Yarn中运行,所以程序的运行结果不能在客户端显示,所以最好将结果保存在HDFS上,客户端的终端显示的是作为Yarn的job的运行情况。

    (2) Yarn Client: Spark Driver程序在客户端上运行,然后向Yarn申请运行exeutor以运行Task,本地程序负责最后的结果汇总等。客户端的Driver将应用提交给Yarn后,Yarn会先后启动ApplicationMaster和executor,另外ApplicationMaster和executor都是装载在container里运行,container默认的内存是1G,ApplicationMaster分配的内存是driver-memory,executor分配的内存是executor-memory。同时,因为Driver在客户端,所以程序的运行结果可以在客户端显示,Driver以进程名为SparkSubmit的形式存在。

    上面命令中的提交方式“yarn”就是默认按照“Yarn Client”方式运行。用户可自定义运行方式,通过“--master”指定程序以yarn、yarn-cluster或者yarn-client中的一种方式运行。

    需要重点说明的是最后文件的路径,是相当于HDFS中的/user/hadoop而言,hadoop是当前命令的用户。“./hdfs-site.xml”在HDFS中的全路径为“hdfs://namespace/user/hadoop/hdfs-site.xml”,其中hadoop是当前的用户,namespace是HDFS的命名空间;如果写成“/hdfs-site.xml”则在HDFS中指的是“hdfs://namespace/hdfs-site.xml”;当然也可以直接传入“hdfs://namespace/user/hadoop/hdfs-site.xml”用于指定在HDFS中的要进行WordCount计算的文件。

    另外,Spark应用程序需要的CPU Core数目和内存,需要根据当前Yarn的NodeManager的硬件条件相应设置,不能超过NodeManager的硬件条件。

    ./bin/spark-submit --master yarn \--class org.apache.spark.examples.JavaWordCount \--executor-memory 400M \--driver-memory 400M \/home/hadoop/spark-1.0.0/examples/target/scala-2.10/spark-examples-1.0.0-hadoop2.0.0-cdh4.5.0.jar hdfs://namespace/user/hadoop/hdfs-site.xml

    在Yarn的ResourceManager对应的Web界面中查看启动的Application。

    Running:


    Success:


    同时可以在启动脚本的客户端看到WordCount的运行结果:

    3.2 Spark Standalone
    这种模式,就是把Spark单独作为一个集群来进行部署。集群中有两种节点,一种是Master,另一种是Worker节点。Master负责分配任务给Worker节点来执行,并负责最后的结果合并,Worker节点负责具体的任务执行。
    3.2.1 配置
    所需修改的配置文件除了spark-env.sh文件以外,还有slave文件,都位于conf目录中。

    slave文件中保存的是worker节点host或者IP,此处的配置为:

    192.168.1.112

    192.168.1.113

    192.168.1.114

    至于spark-env.sh文件,可以配置如下属性:

    (1) SPARK_MASTER_PORT:Master服务端口,默认为7077;

    (2) SPARK_WORKER_CORES:每个Worker进程所需要的CPU核的数目;

    (3) SPARK_WORKER_MEMORY:每个Worker进程所需要的内存大小;

    (4) SPARK_WORKER_INSTANCES:每个Worker节点上运行Worker进程的数目;

    (5) SPARK_MASTER_WEBUI_PORT:Master节点对应Web服务的端口;

    (6)export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=192.168.1.117:2181,192.168.1.118:2181,192.168.1.119:2181 -Dspark.deploy.zookeeper.dir=/spark":用于指定Master的HA,依赖于zookeeper集群;

    (7) export SPARK_JAVA_OPTS="-Dspark.cores.max=4":用于限定每个提交的Spark Application的使用的CPU核的数目,因为缺省情况下提交的Application会使用所有集群中剩余的CPU Core。

    注意在Worker进程的CPU个数和内存大小的时候,要结合机器的实际硬件条件,如果一个Worker节点上的所有Worker进程需要的CPU总数目或者内存大小超过当前Worker节点的硬件条件,则Worker进程会启动失败。

    将配置好的Spark文件拷贝至每个Spark集群的节点上的相同路径中。为方便使用spark-shell,可以在环境变量中配置上SPARK_HOME。
    3.2.2 启动
    配置结束后,就该启动集群了。这里使用Master的HA方式,选取192.168.1.112、192.168.1.113节点作为Master,192.168.1.112、192.168.1.113、192.168.1.114节点上运行两个Worker进程。

    首先在192.168.1.113节点上做此操作:

    启动之后,可以查看当前节点的进程:

    另外,为了保证Master的HA,在192.168.1.112节点上只启动Master:

    192.168.1.112节点的进程为:

    启动过后,通过Web页面查看集群的情况,这里访问的是:
    http://192.168.1.113:8090/ 
    再看standby节点192.168.1.112的web界面
    http://192.168.1.112:8090/ 
    3.2.3 测试
    Spark的bin子目录中的spark-submit脚本是用于提交程序到集群中运行的工具,我们使用此工具做一个关于pi的计算。命令如下:

    ./bin/spark-submit --master spark://spark113:7077 \--class org.apache.spark.examples.SparkPi \--name Spark-Pi --executor-memory 400M \--driver-memory 512M \/home/hadoop/spark-1.0.0/examples/target/scala-2.10/spark-examples-1.0.0-hadoop2.0.0-cdh4.5.0.jar

    其中--master参数用于指定Master节点的URI,但是这里填的是Host,不是IP!

    任务启动之后,在Spark的Master的Web界面可以看到运行中的Application。


    任务运行结束之后,在Web界面中Completed Applications表格中会看到对应的结果。

    同时,命令行中会打印出来运行的结果,如下所示:


    4 spark-submit工具
    上面测试程序的提交都是使用的spark-submit脚本,其位于$SPARK_HOME/bin目录中,执行时需要传入的参数说明如下:

    Usage: spark-submit [options] <app jar | python file> [app options]

    参数名称

    含义

    --master MASTER_URL

    可以是spark://host:port, mesos://host:port, yarn, yarn-cluster,yarn-client, local

    --deploy-mode DEPLOY_MODE

    Driver程序运行的地方,client或者cluster

    --class CLASS_NAME

    主类名称,含包名

    --name NAME

    Application名称

    --jars JARS

    Driver依赖的第三方jar包

    --py-files PY_FILES

    用逗号隔开的放置在Python应用程序PYTHONPATH上的.zip, .egg, .py文件列表

    --files FILES

    用逗号隔开的要放置在每个executor工作目录的文件列表

    --properties-file FILE

    设置应用程序属性的文件路径,默认是conf/spark-defaults.conf

    --driver-memory MEM

    Driver程序使用内存大小

    --driver-java-options


    --driver-library-path

    Driver程序的库路径

    --driver-class-path

    Driver程序的类路径

    --executor-memory MEM

    executor内存大小,默认1G

    --driver-cores NUM

    Driver程序的使用CPU个数,仅限于Spark Alone模式

    --supervise

    失败后是否重启Driver,仅限于Spark Alone模式

    --total-executor-cores NUM

    executor使用的总核数,仅限于Spark Alone、Spark on Mesos模式

    --executor-cores NUM

    每个executor使用的内核数,默认为1,仅限于Spark on Yarn模式

    --queue QUEUE_NAME

    提交应用程序给哪个YARN的队列,默认是default队列,仅限于Spark on Yarn模式

    --num-executors NUM

    启动的executor数量,默认是2个,仅限于Spark on Yarn模式

    --archives ARCHIVES

    仅限于Spark on Yarn模式

    另外,在执行spark-submit.sh工具进行提交应用之前,可以使用如下方式提前定义好当前Spark Application所使用的CPU Core数目和内存大小:

    SPARK_JAVA_OPTS="-Dspark.cores.max=2 -Dspark.executor.memory=600m" \./bin/spark-submit --master spark://update113:7077 \--class org.apache.spark.examples.SparkPi \……

    5 Spark HistoryServer
    类似于Mapreduce的JobHistoryServer,Spark也有一个服务可以保存历史Application的运行记录。

    修改$SPARK_HOME/conf下的spark-defaults.conf文件(注意,修改后的配置文件在每个节点都要有),其中可修改的配置属性为:

    属性名称

    默认值

    含义

    spark.history.updateInterval

    10

    以秒为单位,更新日志相关信息的时间间隔

    spark.history.retainedApplications

    250

    保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除

    spark.history.ui.port

    18080

    HistoryServer的web端口

    spark.history.kerberos.enabled

    False

    是否使用kerberos方式登录访问HistoryServer,对于持久层位于安全集群的HDFS上是有用的,如果设置为true,就要配置下面的两个属性

    spark.history.kerberos.principal


    用于HistoryServer的kerberos主体名称

    spark.history.kerberos.keytab


    用于HistoryServer的kerberos keytab文件位置

    spark.history.ui.acls.enable

    False

    授权用户查看应用程序信息的时候是否检查acl。如果启用,只有应用程序所有者和spark.ui.view.acls指定的用户可以查看应用程序信息;否则,不做任何检查

    spark.eventLog.enabled

    False

    是否记录Spark事件

    spark.eventLog.dir


    保存日志相关信息的路径,可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,都需要提前创建

    spark.yarn.historyServer.address


    Server端的URL:Ip:port 或者host:port

    此处的设置如下:

    spark.eventLog.enabled truespark.eventLog.dir hdfs://yh/user/hadoop/sparklogsspark.yarn.historyServer.address update113:18080

    设置完文件之后,进入sbin目录启动服务:

    运行完成的Application历史记录可以通过访问上面指定的HistoryServer地址查看,这里是
    http://192.168.1.113:18080/ 


    无论运行时是本地模式,还是yarn-client、yarn-cluster,运行记录均可在此页面查看。

    并且程序运行时的环境变量、系统参数、各个阶段的耗时均可在此查看,
    很强大 

    6 Spark可配置参数
    Spark参数的配置可通过三种方式:SparkConf方式 > 命令行参数方式 >文件配置方式。
    6.1 应用属性
    属性名

    默认值

    含义

    spark.app.name


    应用程序名称

    spark.master


    要连接的Spark集群Master的URL

    spark.executor.memory

    512 m

    每个executor使用的内存大小

    spark.serializer

    org.apache.spark

    .serializer.JavaSerializer

    序列化方式,官方建议使用org.apache.spark.serializer.KryoSerializer,当然也可以任意是定义为org.apache.spark.Serializer子类的序化器

    spark.kryo.registrator


    如果要使用 Kryo序化器,需要创建一个继承KryoRegistrator的类并设置系统属性spark.kryo.registrator指向该类

    spark.local.dir

    /tmp

    用于保存map输出文件或者转储RDD。可以多个目录,之间以逗号分隔。在Spark 1.0 及更高版本此属性会被环境变量 SPARK_LOCAL_DIRS (Standalone、Mesos) 或 LOCAL_DIRS (YARN) 代替

    spark.logConf

    False

    SparkContext 启动时是否记录有效 SparkConf信息

    6.2 运行环境变量
    属性名

    默认值

    含义

    spark.executor.extraJavaOptions


    传递给executor的额外JVM 选项,但是不能使用它来设置Spark属性或堆空间大小

    spark.executor.extraClassPath


    追加到executor类路径中的附加类路径

    spark.executor.extraLibraryPath


    启动executor JVM 时要用到的特殊库路径

    spark.files.userClassPathFirst

    False

    executor在加载类的时候是否优先使用用户自定义的JAR包,而不是Spark带有的JAR包,目前,该属性只是一项试验功能

    6.3 Shuffle操作相关属性
    属性名

    默认值

    含义

    spark.shuffle.consolidateFiles

    False

    如果为true,在shuffle时就合并中间文件,对于有大量Reduce任务的shuffle来说,合并文件可以提高文件系统性能,如果使用的是ext4 或 xfs 文件系统,建议设置为true;对于ext3,由于文件系统的限制,设置为true反而会使内核>8的机器降低性能

    spark.shuffle.spill

    True

    如果为true,在shuffle期间通过溢出数据到磁盘来降低了内存使用总量,溢出阈值是由spark.shuffle.memoryFraction指定的

    spark.shuffle.spill.compress

    True

    是否压缩在shuffle期间溢出的数据,如果压缩将使用spark.io.compression.codec。

    spark.shuffle.compress

    True

    是否压缩map输出文件,压缩将使用spark.io.compression.codec。

    spark.shuffle.file.buffer.kb

    100

    每个shuffle的文件输出流内存缓冲区的大小,以KB为单位。这些缓冲区可以减少磁盘寻道的次数,也减少创建shuffle中间文件时的系统调用

    spark.reducer.maxMbInFlight

    48

    每个reduce任务同时获取map输出的最大大小 (以兆字节为单位)。由于每个map输出都需要一个缓冲区来接收它,这代表着每个 reduce 任务有固定的内存开销,所以要设置小点,除非有很大内存

    6.4 SparkUI相关属性
    属性名

    默认值

    含义

    spark.ui.port

    4040

    应用程序webUI的端口

    spark.ui.retainedStages

    1000

    在GC之前保留的stage数量

    spark.ui.killEnabled

    True

    允许在webUI将stage和相应的job杀死

    spark.eventLog.enabled

    False

    是否记录Spark事件,用于应用程序在完成后重构webUI

    spark.eventLog.compress

    False

    是否压缩记录Spark事件,前提spark.eventLog.enabled为true

    spark.eventLog.dir
    file:///tmp/spark-events 
    如果spark.eventLog.enabled为 true,该属性为记录spark事件的根目录。在此根目录中,Spark为每个应用程序创建分目录,并将应用程序的事件记录到在此目录中。可以将此属性设置为HDFS目录,以便history server读取历史记录文件

    6.5 压缩和序列化相关属性
    属性名

    默认值

    含义

    spark.broadcast.compress

    True

    是否在发送之前压缩广播变量

    spark.rdd.compress

    False

    是否压缩RDD分区

    spark.io.compression.codec

    org.apache.spark.io.

    LZFCompressionCodec

    用于压缩内部数据如 RDD分区和shuffle输出的编码解码器, org.apache.spark.io.LZFCompressionCodec和org.apache.spark.io.SnappyCompressionCodec。其中,Snappy提供更快速的压缩和解压缩,而LZF提供了更好的压缩比

    spark.io.compression.snappy

    .block.size

    32768

    使用Snappy编码解码器时,编码解码器使用的块大小 (以字节为单位)

    spark.closure.serializer

    org.apache.spark.serializer.

    JavaSerializer

    用于闭包的序化器,目前只有支持Java序化器

    spark.serializer.
    objectStreamReset
    10000

    org.apache.spark.serializer.JavaSerializer序列化时,会缓存对象以防止写入冗余数据,此时会停止这些对象的垃圾收集。通过调用重置序化器,刷新该信息就可以收集旧对象。若要关闭这重定期重置功能将其设置为< = 0 。默认情况下每10000个对象将重置序化器

    spark.kryo.referenceTracking

    True

    当使用Kryo序化数据时,是否跟踪对同一对象的引用。如果你的对象图有回路或者同一对象有多个副本,有必要设置为true;其他情况下可以禁用以提高性能

    spark.kryoserializer.buffer.mb

    2

    在Kryo 里允许的最大对象大小(Kryo会创建一个缓冲区,至少和序化的最大单个对象一样大)。每个worker的每个core只有一个缓冲区

    6.6 执行时相关属性
    属性名

    默认值

    含义

    spark.default.parallelism

    本地模式:机器核数

    Mesos:8

    其他:max(executor的core,2)

    如果用户不设置,系统使用集群中运行shuffle操作的默认任务数(groupByKey、 reduceByKey等)

    spark.broadcast.factory

    org.apache.spark.broadcast.

    HttpBroadcastFactory

    广播的实现类

    spark.broadcast.blockSize

    4096

    TorrentBroadcastFactory块大小(以kb为单位)。过大会降低广播速度;过小会使印象BlockManager性能

    spark.files.overwrite

    Fale

    通过 SparkContext.addFile() 添加的文件在目标中已经存在并且内容不匹配时,是否覆盖目标文件

    spark.files.fetchTimeout

    False

    在获取由driver通过SparkContext.addFile() 添加的文件时,是否使用通信时间超时

    spark.storage.memoryFraction

    0.6

    Java堆用于cache的比例

    spark.tachyonStore.baseDir

    System.getProperty("java.io.tmpdir")

    用于存储RDD的techyon目录,tachyon文件系统的URL由spark.tachyonStore.url设置,也可以是逗号分隔的多个techyon目录

    spark.storage.

    memoryMapThreshold

    8192

    以字节为单位的块大小,用于磁盘读取一个块大小时进行内存映射。这可以防止Spark在内存映射时使用很小块,一般情况下,对块进行内存映射的开销接近或低于操作系统的页大小

    spark.tachyonStore.url

    tachyon://localhost:19998

    基于techyon文件的URL

    spark.cleaner.ttl


    spark记录任何元数据(stages生成、task生成等)的持续时间。定期清理可以确保将超期的元数据丢弃,这在运行长时间任务是很有用的,如运行7*24的sparkstreaming任务。RDD持久化在内存中的超期数据也会被清理

    6.7 网络相关属性
    属性名

    默认值

    含义

    spark.driver.host


    运行driver的主机名或 IP 地址

    spark.driver.port

    随机

    driver侦听的端口

    spark.akka.frameSize

    10

    以MB为单位的driver和executor之间通信信息的大小,设置值越大,driver可以接受更大的计算结果

    spark.akka.threads

    4

    用于通信的actor线程数,在大型集群中拥有更多CPU内核的driver可以增加actor线程数

    spark.akka.timeout

    100

    以秒为单位的Spark节点之间超时时间

    spark.akka.heartbeat.pauses

    600

    下面3个参数是用于设置Akka自带的故障探测器。启用的话,以秒为单位设置如下这三个参数,有助于对恶意的executor的定位,而对于由于GC暂停或网络滞后引起的情况下,不需要开启故障探测器;另外故障探测器的开启会导致由于心跳信息的频繁交换而引起的网络泛滥。

    本参数是设置可接受的心跳停顿时间

    spark.akka.failure-detector.threshold

    300.0

    对应Akka的akka.remote.transport-failure-detector.threshold

    spark.akka.heartbeat.interval

    1000

    心跳间隔时间

    6.8 调度相关属性
    属性名

    默认值

    含义

    spark.task.cpus

    1

    为每个任务分配的内核数

    spark.task.maxFailures

    4

    Task的最大重试次数

    spark.scheduler.mode

    FIFO

    Spark的任务调度模式,还有一种Fair模式

    spark.cores.max


    当应用程序运行在Standalone集群或者粗粒度共享模式Mesos集群时,应用程序向集群请求的最大CPU内核总数(不是指每台机器,而是整个集群)。如果不设置,对于Standalone集群将使用spark.deploy.defaultCores中数值,而Mesos将使用集群中可用的内核

    spark.mesos.coarse

    False

    如果设置为true,在Mesos集群中运行时使用粗粒度共享模式

    spark.speculation

    False

    以下几个参数是关于Spark推测执行机制的相关参数。此参数设定是否使用推测执行机制,如果设置为true则spark使用推测执行机制,对于Stage中拖后腿的Task在其他节点中重新启动,并将最先完成的Task的计算结果最为最终结果

    spark.speculation.interval

    100

    Spark多长时间进行检查task运行状态用以推测,以毫秒为单位

    spark.speculation.quantile

    0.75

    推测启动前,Stage必须要完成总Task的百分比

    spark.speculation.multiplier

    1.5

    比已完成Task的运行速度中位数慢多少倍才启用推测

    spark.locality.wait

    3000

    以下几个参数是关于Spark数据本地性的。本参数是以毫秒为单位启动本地数据task的等待时间,如果超出就启动下一本地优先级别的task。该设置同样可以应用到各优先级别的本地性之间(本地进程 -> 本地节点 -> 本地机架 -> 任意节点 ),当然,也可以通过spark.locality.wait.node等参数设置不同优先级别的本地性

    spark.locality.wait.process

    spark.locality.wait

    本地进程级别的本地等待时间

    spark.locality.wait.node

    spark.locality.wait

    本地节点级别的本地等待时间

    spark.locality.wait.rack

    spark.locality.wait

    本地机架级别的本地等待时间

    spark.scheduler.revive.interval

    1000

    复活重新获取资源的Task的最长时间间隔(毫秒),发生在Task因为本地资源不足而将资源分配给其他Task运行后进入等待时间,如果这个等待时间内重新获取足够的资源就继续计算

    6.9 安全相关属性
    属性名

    默认值

    含义

    spark.authenticate

    False

    是否启用内部身份验证

    spark.authenticate.secret


    设置组件之间进行身份验证的密钥。如果不是YARN上运行并且spark.authenticate为true时,需要设置密钥

    spark.core.connection. auth.wait.timeout

    30

    进行身份认证的超时时间

    spark.ui.filters
    Spark web UI 要使用的以逗号分隔的筛选器名称列表。筛选器要符合javax servlet Filter标准,每个筛选器的参数可以通过设置java系统属性来指定:

    spark.<class name of filter>.params='param1=value1,param2=value2'

    例如:

    -Dspark.ui.filters=com.test.filter1

    -Dspark.com.test.filter1.params='param1=foo,param2=testing'

    spark.ui.acls.enable

    False

    Spark webUI存取权限是否启用。如果启用,在用户浏览web界面的时候会检查用户是否有访问权限

    spark.ui.view.acls


    以逗号分隔Spark webUI访问用户的列表。默认情况下只有启动Spark job的用户才有访问权限

    6.10 SparkStreaming相关属性
    属性名

    默认值

    含义

    spark.streaming.blockInterval

    200

    Spark Streaming接收器将接收数据合并成数据块并存储在Spark里的时间间隔,毫秒

    spark.streaming.unpersist

    True

    如果设置为true,强迫将SparkStreaming持久化的RDD数据从Spark内存中清理,同样的,SparkStreaming接收的原始输入数据也会自动被清理;如果设置为false,则允许原始输入数据和持久化的RDD数据可被外部的Streaming应用程序访问,因为这些数据不会自动清理
    6.11 Standalone模式特有属性
    可以在文件conf/spark-env.sh中来设置此模式的特有相关属性:

    (1)SPARK_MASTER_OPTS:配置master使用的属性

    (2)SPARK_WORKER_OPTS:配置worker使用的属性

    (3)SPARK_DAEMON_JAVA_OPTS:配置master和work都使用的属性

    配置的时候,使用类似的语句:

    export SPARK_MASTER_OPTS="-Dx1=y1 -Dx2=y2"

    其中x代表属性,y代表属性值。

    SPARK_MASTER_OPTS所支持的属性有:

    属性名

    默认值

    含义

    spark.deploy.spreadOut

    True

    Standalone集群管理器是否自由选择节点还是固定到尽可能少的节点,前者会有更好的数据本地性,后者对于计算密集型工作负载更有效

    spark.worker.timeout

    60

    master因为没有收到心跳信息而认为worker丢失的时间(秒)

    spark.deploy.defaultCores


    如果没有设置spark.cores.max,该参数设置Standalone集群分配给应用程序的最大内核数,如果不设置,应用程序获取所有的有效内核。注意在一个共享的集群中,设置一个低值防止攫取了所有的内核,影响他人的使用

    SPARK_WORKER_OPTS所支持的属性有

    属性名

    默认值

    含义

    spark.worker.cleanup.enabled

    False

    是否定期清理worker的应用程序工作目录,只适用于Standalone模式,清理的时候将无视应用程序是否在运行

    spark.worker.cleanup.interval

    1800

    清理worker本地过期的应用程序工作目录的时间间隔(秒)

    spark.worker.cleanup.appDataTtl

    7*24*3600

    worker保留应用程序工作目录的有效时间。该时间由磁盘空间、应用程序日志、应用程序的jar包以及应用程序的提交频率来设定

    SPARK_DAEMON_JAVA_OPTS所支持的属性有:

    属性名

    含义

    spark.deploy.recoveryMode

    下面3个参数是用于配置zookeeper模式的master HA。设置为ZOOKEEPER表示启用master备用恢复模式,默认为NONE

    spark.deploy.zookeeper.url

    zookeeper集群URL

    spark.deploy.zookeeper.dir

    zooKeeper保存恢复状态的目录,缺省为/spark

    spark.deploy.recoveryMode

    设成FILESYSTEM启用master单节点恢复模式,缺省值为NONE

    spark.deploy.recoveryDirectory

    Spark保存恢复状态的目录

    6.12 Spark on Yarn特有属性
    属性名

    默认值

    含义

    spark.yarn.applicationMaster.waitTries

    10

    RM等待Spark AppMaster启动重试次数,也就是SparkContext初始化次数。超过这个数值,启动失败
    spark.yarn.submit.file.replication

    3

    应用程序上传到HDFS的文件的副本数

    spark.yarn.preserve.staging.files

    False

    若为true,在job结束后,将stage相关的文件保留而不是删除

    spark.yarn.scheduler.heartbeat.interval-ms

    5000

    Spark AppMaster发送心跳信息给YARN RM的时间间隔

    spark.yarn.max.executor.failures

    2倍于executor数

    导致应用程序宣告失败的最大executor失败次数

    spark.yarn.historyServer.address


    Spark history server的地址(不要加http://)。这个地址会在Spark应用程序完成后提交给YARN RM,然后RM将信息从RM UI写到history server UI上。

    7 示例配置
    主要的
    配置文件 
    均位于$SPARK_HOME/conf中,包括slave、spark-env.sh、spark-defaults.conf文件等。
    7.1 slave文件
    192.168.1.112192.168.1.113192.168.1.114

    7.2 spark-env.sh文件

    export JAVA_HOME="/export/servers/jdk1.6.0_25" #yarnexport HADOOP_HOME=/home/hadoop/hadoop-2.0.0-cdh4.5.0export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopSPARK_EXECUTOR_INSTANCES=2SPARK_EXECUTOR_CORES=1SPARK_EXECUTOR_MEMORY=400MSPARK_DRIVER_MEMORY=400MSPARK_YARN_APP_NAME="Spark 1.0.0"#aloneSPARK_MASTER_WEBUI_PORT=8090SPARK_WORKER_MEMORY=400MSPARK_WORKER_CORES=1SPARK_WORKER_INSTANCES=2#Master HAexport SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=192.168.1.117:2181,192.168.1.118:2181,192.168.1.119:2181 -Dspark.deploy.zookeeper.dir=/spark"

    7.3 spark-defaults.conf文件

    #history serverspark.eventLog.enabled truespark.eventLog.dir hdfs://namespace/user/hadoop/sparklogsspark.yarn.historyServer.address spark113:18080#shufflespark.shuffle.consolidateFiles true#taskspark.task.cpus 1spark.task.maxFailures 3#scheduler typespark.scheduler.mode FAIR#securitypark.authenticate truespark.authenticate.secret hadoopspark.core.connection.auth.wait.timeout 1500spark.ui.acls.enable truespark.ui.view.acls root,hadoop#each executor used max memoryspark.executor.memory 400m#spark on yarnspark.yarn.applicationMaster.waitTries 5spark.yarn.submit.file.replication 3spark.yarn.preserve.staging.files falsespark.yarn.scheduler.heartbeat.interval-ms 5000#park standalone and on mesosspark.cores.max 4

    8 Spark SQL
    Spark支持Scala、Python等语言写的脚本直接在Spark环境执行,更重要的是支持对Hive语句进行包装后在Spark上运行。这就是Spark SQL。
    8.1 相关配置
    配置的步骤比较简单,把Hive的配置文件hive-site.xml直接放置到$SPARK_HOME的conf路径下即可。如果是想在Spark集群本地执行SQL的话,每个对应的节点都要做同样的配置。
    8.2 运行SQL
    启动bin目录下的spark-shell脚本,依次执行如下语句:

    val sc: SparkContextval hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)import hiveContext._hql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)")hql("LOAD DATA LOCAL INPATH '/examples /data.txt' INTO TABLE src")hql("FROM src SELECT key, value").collect().foreach(println)

    上面的命令,分别是声明SparkContext对象,利用hql方法执行Hive的SQL语句,在执行SQL语句的过程中,可以通过Hive的Cli客户端进行查看相应操作的结果。
    8.3 on yarn模式
    由于spark-shell脚本是在本地执行的,如果想放到Yarn上去执行的话,可以使用上面第4节中的spark-submit工具,这时候需要对需要输入的sql语句进行包装,将包装类打包成jar文件,再提交。

    包装类的代码如下:

    1 package spark; 2 3 import java.util.List; 4 5 import org.apache.spark.SparkConf; 6 import org.apache.spark.api.java.JavaSparkContext; 7 import org.apache.spark.sql.api.java.Row; 8 import org.apache.spark.sql.hive.api.java.JavaHiveContext; 9 10 /**11 * Description:12 * Author: ITScott@163.com13 * Date: 2014/7/1514 */15 public class SparkSQL {16 17 public static void main(String[] args) {18 if(args.length != 2){19 System.out.println("usage: <applicationName> <sql statments>");20 System.exit(1);21 }22 23 String applicationName = args[0];24 String sql = args[1];25 26 SparkConf conf = new SparkConf().setAppName(applicationName);27 JavaSparkContext sc = new JavaSparkContext(conf);28 JavaHiveContext hiveContext = new JavaHiveContext(sc);29 List<Row> results = hiveContext.hql(sql).collect();30 31 System.out.println("Sql is:" + sql + ", has been executed over.");32 System.out.println("The result size is " + results.size() + ", they are:");33 for(int i=0; i<results.size(); i++){34 System.out.println(results.get(i).toString());35 }36 37 System.out.println("Execute over ...");38 sc.stop();39 System.out.println("Stop over ...");40 }41 42 }

    将其打包成jar文件spark-0.0.1-SNAPSHOT.jar,再使用spark-submit工具进行任务的提交,命令如下:

    ./spark-submit \--class spark.SparkSQL \--master yarn-cluster \--num-executors 3 \--driver-memory 400m --executor-memory 400m --executor-cores 1 \--jars /home/hadoop/spark-1.0.0/examples/libs/spark-core_2.10-1.0.0.jar,/home/hadoop/spark-1.0.0/examples/libs/spark-hive_2.10-1.0.0.jar,/home/hadoop/spark-1.0.0/lib_managed/jars/datanucleus-api-jdo-3.2.1.jar,/home/hadoop/spark-1.0.0/lib_managed/jars/datanucleus-core-3.2.2.jar,/home/hadoop/spark-1.0.0/lib_managed/jars/datanucleus-rdbms-3.2.1.jar,/home/hadoop/hive-0.12.0/lib/mysql-connector-java-5.1.27-bin.jar--files /home/hadoop/spark-1.0.0/conf/hive-site.xml \/home/hadoop/spark-1.0.0/examples/libs/spark-0.0.1-SNAPSHOT.jar "hiveTest" "CREATE TABLE IF NOT EXISTS test4 (key INT, value STRING)"

    其中,--master参数指定的是yarn-cluster模式,当然也可以使用yarn-client模式,至于区别,已经在上文说了;--class指定的是我们包装类的主类,见上文源码;--jars是依赖的四个jar包;--files是指定的hive-site.xml配置文件,提交到Yarn中的Application在执行的时候,需要把此配置文件分发到每个Executor上;最后的两个参数,一个是Application的名称,一个是运行的SQL语句。

    运行结束后,可以到Spark HistoryServer中查看运行结果。
    展开全文
  • 通过实现框架懒加载来实现优化项目打包体积大小。(本篇使用 element-ui 为例,使用插件 babel-plugin-component)。 一、未优化前 // plugins/element-ui.js import Vue from 'vue' import { Button, Loading, ...

    前言

    nuxt 学习之路 - nuxt.config.js 配置篇。通过实现框架懒加载来实现优化项目打包体积大小。(本篇使用 element-ui 为例,使用插件 babel-plugin-component)。


    一、未优化前

    // plugins/element-ui.js
    import Vue from 'vue'
    import { Button, Loading, Notification, Message, MessageBox } from 'element-ui'
    
    import lang from 'element-ui/lib/locale/lang/zh-CN'
    import locale from 'element-ui/lib/locale'
    
    locale.use(lang)
    
    Vue.use(Loading.directive)
    Vue.prototype.$loading = Loading.service
    Vue.prototype.$msgbox = MessageBox
    Vue.prototype.$notify = Notification
    Vue.prototype.$message = Message
    
    Vue.use(Button)
    
    

    运行项目时可以发现,虽然我们只引入 element-ui 的几个组件,但是 vendors.app.js 文件的体积还是很大,如下图:
    在这里插入图片描述

    二、使用 babel-plugin-component 实现懒加载,优化打包体积

    plugins/element-ui.js 文件的内容不变,先安装插件(npm i babel-plugin-component -D),再配置 nuxt.config.js,

    // nuxt.config.js
    module.exports = {
    	build: {
    	    // 为 JS 和 Vue 文件设定自定义的 babel 配置。
    	    babel: {
    	      plugins: [
    	        [
    	          'component', { libraryName: 'element-ui', styleLibraryName: 'theme-chalk' }
    	        ]
    	      ]
    	    }
    	}
    }
    

    重新 run 下,可以看到此时的 vendors.app.js 由之前的 2.3Mb 变成了现在的 988kb,babel-plugin-component 实现 按需加载,只把我们引用到的组件加载进来,如下图:
    在这里插入图片描述

    展开全文
  • Intellij IDEA 2018 最新优化配置

    万次阅读 热门讨论 2018-08-21 11:50:00
    F12 资源管理器打开文件夹 ALT + F1 查找文件所在目录位置 SHIFT + ALT + INSERT 竖编辑模式 CTRL + F4 关闭当前窗口 Ctrl + Alt + V,可以引入变量。例如:new String ( ) ; 自动导入变量定义 Ctrl + ~ ,...

    注意:

    CSDN随缘更新,此篇文章内容请访问:http://bianxiaofeng.com/f/article/50.html

    原文链接 Dimple’s Blog 后续更新会首先更新这个博客的,欢迎关注!

    前言

    好吧工欲善其事必先利其器,我平时比较喜欢使用IDEA,这个软件可以很大程度上提高工作效率。IDEA全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
    一直都有想过写一篇关于IDEA的设置优化的博文,因为确实网上的不是很适合我的风格。且网上的优化教程不是很多,自己摸索出来一下,希望能够帮到大家。

    本文呢,会分为一下三部分进行说明:

    1. IDEA设置优化
    2. IDEA的插件优化
    3. IDEA的快捷键优化
      其中呢,会针对个别插件进行说明。

    IDEA设置优化

    这里不合适的插一脚:
    使用的是最新版的IDEA,破解方法是采用http://idea.lanyus.com/的方法。另外提供破解补丁的方法:

    JetBrains全系列破解补丁v1.0: https://www.ghpym.com/jetbrainspath.html

    代码提示

    默认是区分大小写的,这样的代码提示不是很舒服,改!
    代码提示修改

    自动导包

    项目中的包只有很少数的时候是会冲突,那么,每次写代码的时候,每次都要手动导包?不行,改!
    自动导包

    启动的时候不自动进入到上一次的工程

    项目运行的时候,想换一个工程?每次IDEA都要自动打开?不行,改!
    enter description here

    鼠标滑轮调整编辑区字体大小

    写代码的时候突然近视怎么办?放大,放大操作台繁琐?不行,改!
    更改字体大小

    自动保存文件

    还在ctrl+s保存文件?费时间,在编辑区失去鼠标焦点的时候进行自动保存岂不是更好?改!
    自动保存文件

    显示空白符,方法分隔符

    显示空白符

    设置模板

    参考这个博文。

    设置只带的Terminal为Git Bash

    Git是一定要使用的,使用的时候还需要单独切出去开一个Bash就太不方便了(个人不喜欢使用类似于小乌龟的Git GUI软件,认为减少了使用Git的乐趣)。

    QQ截图20180821113239-2018821

    设置完成后正常情况下Terminal是要自动转换为unicode编码的。解决方案如下:

    打开Git的安目录下的etc目录:我的是在D:\Program Files\Git\etc下:,找到bash.bashrc文件在其最后面添加:

    # 解决中文乱码
    export LANG="zh_CN.UTF-8"
    export LC_ALL="zh_CN.UTF-8"
    

    重新启动IDEA即可!

    插件篇

    Custom Postfix Templates

    图片来源网络,致谢

    RestfulToolkit

    ![图片来源网络,致谢](http://p2sj58chj.bkt.clouddn.com/blog/640 (1).gif)
    图片来源网络,致谢

    Grep Console

    彩色日志
    图片来源网络,致谢

    配上我自己比较喜欢的一套代码配色
    代码配色
    JRebel for IntelliJ
    配色方案:

    Type        Color
    verbose:    #BBB
    debug:      #33B5E5
    info:       #9C0
    assert:     #A6C
    error:      #F44
    warning:    #FB3
    

    GsonFormat

    JSON报文 –> Java POJO 快速转换。

    GsonFormat

    Alibaba Java Coding Guidelines

    阿里巴巴Java开发规约扫描插件。

    Rainbow Brackets

    彩虹括号。自动给代码块内花括号和括号加颜色。
    Rainbow Brackets

    IDEA的快捷键优化

    自动代码

    Ctrl+Alt+O 优化导入的类和包 
    Alt+Insert 生成代码(如get,set方法,构造函数等) 或者右键(Generate) 
    fori/sout/psvm + Tab 
    Ctrl+Alt+T 生成try catch 或者 Alt+enter 
    CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里 
    Ctrl + O 重写方法 
    Ctrl + I 实现方法 
    Ctr+shift+U 大小写转化 
    ALT+回车 导入包,自动修正 
    ALT+/ 代码提示 
    CTRL+J 自动代码 
    Ctrl+Shift+J,整合两行为一行 
    CTRL+空格 代码提示 
    CTRL+SHIFT+SPACE 自动补全代码 
    CTRL+ALT+L 格式化代码 
    CTRL+ALT+I 自动缩进 
    CTRL+ALT+O 优化导入的类和包 
    ALT+INSERT 生成代码(如GET,SET方法,构造函数等) 
    CTRL+E 最近更改的代码 
    CTRL+ALT+SPACE 类名或接口名提示 
    CTRL+P 方法参数提示 
    CTRL+Q,可以看到当前方法的声明
    
    Shift+F6 重构-重命名 (包、类、方法、变量、甚至注释等) 
    Ctrl+Alt+V 提取变量
    

    查询快捷键

    Ctrl+Shift+Backspace可以跳转到上次编辑的地 
    CTRL+ALT+ left/right 前后导航编辑过的地方 
    ALT+7 靠左窗口显示当前文件的结构 
    Ctrl+F12 浮动显示当前文件的结构 
    ALT+F7 找到你的函数或者变量或者类的所有引用到的地方 
    CTRL+ALT+F7 找到你的函数或者变量或者类的所有引用到的地方
    
    Ctrl+Shift+Alt+N 查找类中的方法或变量 
    双击SHIFT 在项目的所有目录查找文件 
    Ctrl+N 查找类 
    Ctrl+Shift+N 查找文件 
    CTRL+G 定位行 
    CTRL+F 在当前窗口查找文本 
    CTRL+SHIFT+F 在指定窗口查找文本 
    CTRL+R 在 当前窗口替换文本 
    CTRL+SHIFT+R 在指定窗口替换文本 
    ALT+SHIFT+C 查找修改的文件 
    CTRL+E 最近打开的文件 
    F3 向下查找关键字出现位置 
    SHIFT+F3 向上一个关键字出现位置 
    选中文本,按Alt+F3 ,高亮相同文本,F3逐个往下查找相同文本 
    F4 查找变量来源
    
    CTRL+SHIFT+O 弹出显示查找内容
    
    Ctrl+W 选中代码,连续按会有其他效果 
    F2 或Shift+F2 高亮错误或警告快速定位 
    Ctrl+Up/Down 光标跳转到第一行或最后一行下
    
    Ctrl+B 快速打开光标处的类或方法 
    CTRL+ALT+B 找所有的子类 
    CTRL+SHIFT+B 找变量的类
    
    Ctrl+Shift+上下键 上下移动代码 
    Ctrl+Alt+ left/right 返回至上次浏览的位置 
    Ctrl+X 删除行 
    Ctrl+D 复制行 
    Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/…/ )
    
    Ctrl+H 显示类结构图 
    Ctrl+Q 显示注释文档
    
    Alt+F1 查找代码所在位置 
    Alt+1 快速打开或隐藏工程面板
    
    Alt+ left/right 切换代码视图 
    ALT+ ↑/↓ 在方法间快速移动定位 
    CTRL+ALT+ left/right 前后导航编辑过的地方 
    Ctrl+Shift+Backspace可以跳转到上次编辑的地 
    Alt+6 查找TODO
    

    其他快捷键

    SHIFT+ENTER 另起一行 
    CTRL+Z 倒退(撤销) 
    CTRL+SHIFT+Z 向前(取消撤销) 
    CTRL+ALT+F12 资源管理器打开文件夹 
    ALT+F1 查找文件所在目录位置 
    SHIFT+ALT+INSERT 竖编辑模式 
    CTRL+F4 关闭当前窗口 
    Ctrl+Alt+V,可以引入变量。例如:new String(); 自动导入变量定义 
    Ctrl+~,快速切换方案(界面外观、代码风格、快捷键映射等菜单
    

    svn快捷键

    ctrl+k 提交代码到SVN 
    ctrl+t 更新代码
    

    调试快捷键

    其实常用的 就是F8 F7 F9 最值得一提的 就是Drop Frame 可以让运行过的代码从头再来

    alt+F8 debug时选中查看值 
    Alt+Shift+F9,选择 Debug 
    Alt+Shift+F10,选择 Run 
    Ctrl+Shift+F9,编译 
    Ctrl+Shift+F8,查看断点
    F7,步入 
    Shift+F7,智能步入 
    Alt+Shift+F7,强制步入 
    F8,步过 
    Shift+F8,步出 
    Alt+Shift+F8,强制步过
    
    Alt+F9,运行至光标处 
    Ctrl+Alt+F9,强制运行至光标处 
    F9,恢复程序 
    Alt+F10,定位到断点
    

    重构

    Ctrl+Alt+Shift+T,弹出重构菜单 
    Shift+F6,重命名 
    F6,移动 
    F5,复制 
    Alt+Delete,安全删除 
    Ctrl+Alt+N,内联
    
    展开全文
  • Hadoop Yarn内存使用优化配置

    万次阅读 2015-10-05 17:56:53
    第一部分Hadoop Yarn内存使用优化配置  在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源...
  • Intellij IDEA 2019 最新优化配置

    万次阅读 多人点赞 2019-04-05 14:58:27
    之前在CSDN上写了一点关于IDEA的优化配置之类的文章,有些图片失效了,很多人都希望会有继续更新,于是有了这篇文章 前言 好吧工欲善其事必先利其器,我平时比较喜欢使用IDEA,这个软件可以很大程度上提高...
  • JedisPool资源优化

    万次阅读 2018-03-19 20:23:43
    背景合理的JedisPool资源池参数设置能为业务使用Redis保驾护航,本文将对JedisPool的使用、资源池的参数进行详细说明,最后给出“最合理”配置。一、使用方法以官方的2.9.0为例子(Jedis Release),Maven依赖如下:&...
  • MySQL优化之my.conf配置详解

    万次阅读 多人点赞 2017-12-29 11:30:08
    最近项目不太忙,所以有时间静心来研究下mysql的优化,对于MySQL的设置是否合理优化,直接影响到网站的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的...
  • nginx配置访问本地静态资源

    万次阅读 多人点赞 2019-04-11 18:07:39
    nginx作为一款高性能的服务器,用途很多,除了可以做后端服务器的代理,负载均衡之外你,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相关...
  • YARN内存使用优化配置

    千次阅读 2015-10-22 19:09:02
    在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源调度. 如下图所示  YARN会管理集群中所有机器的...
  • nginx的配置优化

    千次阅读 2017-04-14 09:31:47
    优化nginx的配置,做到合理高效的使用,让程序的跑的足够快,支持足够多的并发:目标: 1.尽量提高但台机器的处理效率 2.尽量减少单台机器的负载 3.尽量减少磁盘的i/o 4.尽量减少网络的i/o 5.尽量减少内存的...
  • FPGA布局及资源优化

    千次阅读 2019-07-21 22:29:27
    这大半年一直在做一个高速板卡FPGA相关的方方面面的工作,包括前期FPGA架构布局设计,管脚验证,后期实现资源优化,最后到板卡调试。过程曲折艰辛,但是也收获良多。今天在这里记录下工作中零零散散的记录下来。 1....
  • 抖音包大小优化-资源优化

    千次阅读 2020-03-30 09:54:27
    根据优化配置确保留一份资源,优化方式如下图(灰色数据表示会被删除): 5.重复资源合并 随着项目的迭代,项目中难免会出现相同的资源被重复添加到资源路径中,对于这类文件,人工处理肯定是不可行的,可以在打包阶段...
  • SSL 配置优化的若干建议

    万次阅读 2018-01-28 22:26:34
    如果你配置SSL只是为了网站的网址前有一把锁的标志,那不如直接送你把锁好了。 别想了,这句话不是哪个安全专家说的,是我说的(逃) 今天写一篇文章记录一下自己 SSL 的配置优化过程。以下设置均为 Nginx 的...
  • mysql5.7配置文件优化

    万次阅读 2017-04-25 17:30:58
    mysql5.7的配置文件优化,引用了别人的模板,根据自己的情况修改了一些参数,加上注释,留着备用,感兴趣的朋友可以借鉴一下,如果无法启动可以查看一下error_log,修改相应的参数。[mysqld] pid-file = /var/run/...
  • Tomcat 优化方案 和 配置详解

    万次阅读 2016-05-18 10:59:13
    Service.xml Server.xml配置文件用于对整个容器进行相关的配置。...className:实现了org.apache.catalina.Server接口的类名,标准实现类是org.apache.catalina.core.StandardServer下载类。 Port:Tomcat
  • apache性能配置优化

    万次阅读 2015-07-15 14:13:23
    最近在进行apache性能优化设置。在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯。  httpd相关查看命令了解  查看当前安装模块mpm(多路处理器) httpd -l  查看httpd进程数(即...
  • 一种Java Web程序资源优化方法

    千次阅读 2013-02-04 10:12:11
    一种Java Web程序资源优化方法作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs要怎样组织和优化CSS和脚本文件资源?很多CSS和JavaScript资源分散在不同的文件中,可能对网页的载入速度有影响。WRO...
  • 前言:Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServer ManagementStudio的图形化界面实现。 准备工作:为了查看SQLServer当前实例的配置,也可以使用下列查询来实现:SELECT ...
  • 一、内存优化默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况。即使是本文中的这个只有一个页面的超小项目,在并发达到一定...
  • Unity中项目资源管理与优化

    千次阅读 2018-06-07 10:15:59
    Unity新手入门进阶之路(群内各种入门资源资料大神):721559786 (加群下载插件资源学习资料) 贴图优化贴图资源是游戏当中消耗最大的资源,贴图资源的管理直接影响到整个游戏内存的性能。使用图集:使用图集能够很好...
  • 一、MySQL性能优化之-影响性能的因素1.商业需求的影响不合理需求造成资源投入产出比过低,这里我们就用一个看上去很简单的功能来分析一下。需求:一个论坛帖子总量的统计,附加要求:实时更新从功能上来看非常容易...
  • Tomcat优化配置线程池

    万次阅读 2017-04-21 09:13:30
    简介    线程池作为提高程序处理数据能力的一种...大量的服务器都或多或少的使用到了线程池技术,不管是用Java还是C++实现,线程池都有如下的特点:线程池一般有三个重要参数: 最大线程数。在程序运行的任何
  • Nginx反向代理+Nginx性能优化配置详解

    万次阅读 2018-01-29 17:13:05
    简介: 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将... 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Inte
  • 前言:Nginx?为什么选择Nginx?还不用Nginx你就out了。Nginx相比Apache拥有更块、高扩展性、高...nginx.conf配置通用语法块配置项块配置项由一个块配置项名和一对大括号组成如: user nobody; worker_processes 8;
  • tomcat内存配置优化

    万次阅读 2014-06-17 10:51:19
    简介 考虑一下这种场景,你开发了一个应用,它有十分优秀的布局设计,最新的特性以及其它的优秀特点。但是在性能这方面欠缺,不管这个... article给本文提供资源。经过沉思我已经知道了和早期版本相比最新的Tomca
  • 首先这个配置模式估计现在已经不用了,因为我在我们公司的项目里面并没有看到这么配置AOP相关的东西。虽然公司项目使用的是3.1,而我学习的这个版本是2.5。 不过,这个就和学习spring的控制反转(IOC)和依赖注入...
  • Tomcat简介、服务部署、虚拟主机配置及相关配置文件参数优化一、Tomcat 简介核心的组件二、Tomcat 服务部署安装1、关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下2、安装JDK3、设置JDK环境变量4、安装启动...
  • Vue+Nuxt项目如何实现首页优化

    千次阅读 2019-11-11 13:59:30
    首页打开的时候,一共12个请求,4.5M,打开时间大概为7.64s,在打开之前会有很长一段时间的空白,要如何优化首页的加载时间呢?...nuxt.config.js中analyze的配置如下: build: { /* ** You ca...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 312,563
精华内容 125,025
关键字:

为了实现资源的优化配置