4、Spark 配置及启动 1.配置
修改spark-env..sh 增加如下参数(路径根据服务器上的路径修改)
HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.4/etc/hadoop/ HADOOP_HOME=/home/hadoop/hadoop-2.6.4/
SPARK_HOME=/home/hadoop/spark-1.6.0-bin-hadoop2.6/
该参数决定了yarn集群中,最多能够同时启动的EXECUTOR的实例个数。 SPARK_EXECUTOR_INSTANCES=3
设置每个EXECUTOR能够使用的CPU core的数量。 SPARK_EXECUTOR_CORES=7
该参数设置的是每个EXECUTOR分配的内存的数量 SPARK_EXECUTOR_MEMORY=11G
该参数设置的是DRIVER分配的内存的大小 SPARK_DRIVER_MEMORY=11G
Spark Application在Yarn中的名字
SPARK_YARN_APP_NAME=”asiainfo.Spark-1.6.0″
指定在yarn中执行,提交方式为client MASTER=yarn-client
修改spark-default.conf文件 (路径根据服务器上的路径修改)
如果没有适合当前本地性要求的任务可供运行,将跑得慢的任务在空闲计算资源上再度调度的行为,这个参数会引发一些tmp文件被删除的问题,一般设置为false spark.speculation false
如果设置为true,前台用jdbc方式连接,显示的会是乱码 spark.sql.hive.convertMetastoreParquet false
应用程序上载到HDFS的复制份数 spark.yarn.submit.file.replication 3
Spark application master给YARN ResourceManager 发送心跳的时间间隔(ms) spark.yarn.scheduler.heartbeat.interal-ms 5000
仅适用于HashShuffleMananger的实现,同样是为了解决生成过多文件的问题,采用的方式是在不同批次运行的Map任务之间重用Shuffle输出文件,也就是说合并的是不同批次的Map任务的输出数据,但是每个Map任务所需要的文件还是取决于Reduce分区的数量,因此,它并不减少同时打开的输出文件的数量,因此对内存使用量的减少并没有帮助。只是HashShuffleManager里的一个折中的解决方案。 spark.shuffle.consolidateFiles true
用来调整cache所占用的内存大小。默认为0.6。如果频繁发生Full GC,可以考虑降低这个比值,这样RDD Cache可用的内存空间减少(剩下的部分Cache数据就需要通过Disk Store写到磁盘上了),会带来一定的性能损失,但是腾出更多的内存空间用于执行任务,减少Full GC发生的次数,反而可能改善程序运行的整体性能。这要看你的具体业务逻辑,是cache的多还是计算的多。
spark.storage.memoryFraction 0.3
一个partition对应着一个task,如果数据量过大,可以调整次参数来减少每个task所需消耗的内存.
spark.sql.shuffle.partitions 800
Spark SQL在每次执行次,先把SQL查询编译JAVA字节码。针对执行时间长的SQL查询或频繁执行的SQL查询,此配置能加快查询速度,因为它产生特殊的字节码去执行。但是针对很短的查询,可能会增加开销,因为它必须先编译每一个查询 spark.sql.codegentrue
我们都知道shuffle默认情况下的文件数据为map tasks * reduce tasks,通过设置其为true,可以使spark合并shuffle的中间文件为reduce的tasks数目。 spark.shuffle.consolidateFiles true
2.启动
在spark 目录下执行bin/run-example JavaPageRank README.txt 1> JavaPageRank.txt 即可运行spark自带的例子
5、常见错误:
1、 配置免密码登陆SSH
遇到的错误:
但仍要求输入密码,原因是.ssh和authorized_keys权限不对,具体见:http://blog.csdn.net/hwwn2009/article/details/39852457 用root用户登陆查看系统的日志文件:$tail /var/log/secure -n 20
…………
Oct 7 10:26:43 MasterServer sshd[2734]: Authentication refused: bad ownership or modes for file /home/hadooper/.ssh/authorized_keys
Oct 7 10:26:48 MasterServer sshd[2734]: Accepted password for hadooper from ::1 port 37456 ssh2
Oct 7 10:26:48 MasterServer sshd[2734]: pam_unix(sshd:session): session opened for user hadooper by (uid=0)
Oct 7 10:36:30 MasterServer sshd[2809]: Accepted password for hadooper from 192.168.1.241 port 36257 ssh2
Oct 7 10:36:30 MasterServer sshd[2809]: pam_unix(sshd:session): session opened for user hadooper by (uid=0)
Oct 7 10:38:28 MasterServer sshd[2857]: Authentication refused: bad ownership or modes for directory /home/hadooper/.ssh …………
提示/home/hadooper/.ssh和 /home/hadooper/.ssh/authorized_keys权限不对,修改如下: Shell代码
1. chmod 700 ~/.ssh
2. chmod 600 ~/.ssh/authorized_keys
2、 启动Hadoop时: (1)
slave2: Error: JAVA_HOME is not set and could not be found. slave1: Error: JAVA_HOME is not set and could not be found. 解决方案:
分别在etc/Hadoop/下的hadoop-env.sh和yarn-env.sh中添加JAVA_HOME
export JAVA_HOME=/usr/jdk1.8.0_45/
(2)You have loaded library /usr/hadoop/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. 解决方案:
在etc/profile中添加:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS=\
(3)进程中看不到seconaryNameNode进程时。 解决方案:
在hadoop2.6.0/etc/hadoop下的masters文件中添加对应的主机名(类似slaves文件)
3、 Caused by: java.net.ConnectException: Call From slave1/127.0.0.1 to master:8031
failed on connection exception: 解决方案:
vi /etc/hosts检查如下配置的
4、如果启动时出现sshd的连接错误,执行如下操作:
防火墙:service iptables stop 启动服务,service sshd start
让其开机启动:chkconfig --level 35 sshd on 关闭防火墙:
1. 重启后永久性生效:
开启:chkconfig iptables on 关闭:chkconfig iptables off 2. 即时生效,重启后失效: 开启:service iptables start 关闭:service iptables stop
相关推荐: