spark shell本地模式:
(1)使用spark shell需要开启Hadoop集群,在/home/hadoop/apps/spark-2.2.0-bin-hadoop2.7目录下执行命令:bin/spark-shell
(2)val rdd = sc.parallelize(1 to 100,3):定义一个不可变的变量为数字1-100,3个分区;
rdd.count:计算rdd中有多少个元素
val rdd2 = rdd.map(_+1):针对rdd每个元素进行加1
rdd2.take(3):取rdd2里面前3个元素
(3)val rdd1 = sc.textFile("file:///home/hadoop/apps/sparkwc",1):定义rdd1为从/home/hadoop/apps目录下sparkwc文件读取且指定为1个分区;rdd1.partitions.length:查看rdd1的分区数
val rdd2 = rdd1.flatMap(_.split("\t")):rdd2为对rdd1读取的文件按Tab键分隔
val rdd3 = rdd2.map((_,1)):rdd3将rdd2得到的字符串转换为(key,1)的形式
val rdd4 = rdd3.reduceByKey(_+_):rdd4将rdd3中key相同的1进行累加
rdd4.collect():查看rdd4中的内容
(4)sc.textFile("hdfs://192.168.137.100:9000/wordcount/input",1).flatMap(_.split("\t")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://192.168.137.100:9000/wordcount/out2"):从hdfs上读取文件进行wordcount统计,然后按照value值降序排列输出指定hdfs目录下
spark ON YARN(client)模式:
(1)修改/home/hadoop/apps/hadoop-2.7.4/etc/hadoop目录下的yarn-site.xml文件,增加内容
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>10</value>
</property>保持所有节点的配置文件内容一致,重启YARN
(2)修改spark安装包conf目录下的spark-env.sh,解压的安装包里没有该文件,用命令:cp spark-env.sh.template spark-enc.sh拷贝该文件,在最后增加内容:export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop;可选修改spark安装包conf目录下的spark-defaults.conf内容,利用命令:cp spark-defaults.conf.template spark-defaults.conf拷贝该文件,在最后增加内容:spark.default.parallelism = 1设置默认分区数为1
启动:
bin/spark-shell --master yarn --deploy-mode client
注意:spark-shell只能以client的模式运行,Driver要运行在本地
(3)sc.textFile("/wordcount/input").flatmap(_.split("\t")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("/wordcount/out4"):从hdfs上读取文件,然后将读取的文件按照value将序排列输出到指定的hdfs目录下
spark ON YARN(cluster)模式:
Spark History Server配置
(1)spark history server查看运行完成的作业信息和日志
(2)配置Hadoop的yarn-site.xml文件,所有节点配置文件同步,重启yarn
<property>
<name>yarn.log.server.url</name>
<value>http://node02:19888/jobhistory/logs</value>
<description>Yarn JobHistoryServer访问地址</description>
</property>
(3)修改spark安装包conf目录下的spark-defaults.conf(如果没有该文件,通过spark-defaults.conf.template模板复制一个),spark history server在192.168.137.100节点启动,spark_logs这个目录需要在HDFS上提前创建
spark.yarn.historyServer.address=192.168.137.100:18080
spark.history.ui.port=18080
spark.eventLog.enabled=true
spark.eventLog.dir=hdfs://spark_logs
spark.history.fs.logDirectory=hdfs:///spark_logs
Spark History Server启动
(1)启动Spark History Server
sbin/start-history-server.sh
(2)Spark History Server访问地址
http://192.168.137.100:18080
(3)Spark History Server使用
Spark运行环境优化
将spark系统jar包上传到HDFS上,直接使用HDFS上的文件
(1)在spark安装目录下运行:jar cv0f spark-libs.jar -C jars/ .
(2)将spark安装目录下生成的spark-libs.jar上传到HDFS上的/system/spark(需要手动创建)目录下
hadoop fs -put spark-libs.jar /system/spark
(3)修改spark安装包conf目录下spark-defaults.conf配置文件添加spark-libs.jar在HDFS上的路径
spark.yarn.archive=hdfs:///system/spark/spark-libs.jar
启动spark ON YARN(cluster)模式:
进入/home/hadoop/apps/spark-2.2.0-bin-hadoop2.7目录下,运行如下命令:
bin/spark-submit \
--class bigdata.spark.WordCount \
--master yarn \
--deploy-mode cluster \
--driver-cores 1 \
--num-executors 1 \
--executor-cores 1 \
--executor-memory 3g \
./bigdatasparkpro-1.0-SNAPSHOT.jar /data/wc/in /data/wc/out1