CDH6.0、6.1篇:8、CDH的 hive on spark配置及解析、优化

分三个章节

1、版本展示

2、CDH安装spark

3、优化配置信息

----------------------分割线----------------------------------------

1、版本展示

在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.所有版本:https://www.scala-lang.org/download/all.html

2.11.8版本:https://www.scala-lang.org/download/2.11.8.html
2.12.8版本:

tar -zxvf scala-2.12.8.tgz
mv scala-2.12.8 scala
scp -r /root/scala root@node2:/root
scp -r /root/scala root@node3:/root

2.配置环境变量,将scala加入到PATH中:

vim /etc/profile
主要添加蓝色字体处 
export PATH=$PATH:$JAVA_HOME/bin:/root/scala/bin
或者
PATH=$JAVA_HOME/bin:$PATH:/root/scala/bin
export JAVA_HOME CLASSPATH PATH
source /etc/profile

3.scala的命令行模式:

输入 scala ,执行1+1,输出结果2

2、CDH 安装 spark

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.spark的命令行模式

1.第一种进入方式:执行 pyspark进入,执行exit()退出
	1.注意报错信息:java.lang.IllegalArgumentException: 
	Required executor memory (1024+384 MB) is above the (最大阈值)max threshold (1024 MB) of this cluster! 
	表示 执行器的内存(1024+384 MB) 大于 最大阈值(1024 MB)
	Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or'yarn.nodemanager.resource.memory-mb'

在这里插入图片描述在这里插入图片描述

2.初始化RDD的方法

		本地内存中已经有一份序列数据(比如python的list),可以通过sc.parallelize去初始化一个RDD。
		当执行这个操作以后,list中的元素将被自动分块(partitioned),并且把每一块送到集群上的不同机器上。

1.第一种进入方式:

import pyspark from pyspark 
import SparkContext as sc from pyspark 
import SparkConf
conf=SparkConf().setAppName("miniProject").setMaster("local[*]")
#任何Spark程序都是SparkContext开始的,SparkContext的初始化需要一个SparkConf对象,SparkConf包含了Spark集群配置的各种参数(比如主节点的URL)。
#初始化后,就可以使用SparkContext对象所包含的各种方法来创建和操作RDD和共享变量。
#Spark shell会自动初始化一个SparkContext(在Scala和Python下可以,但不支持Java)。
#getOrCreate表明可以视情况新建session或利用已有的session
sc=SparkContext.getOrCreate(conf) 

# 利用list创建一个RDD;使用sc.parallelize可以把Python list,NumPy array或者Pandas Series,Pandas DataFrame转成Spark RDD。
rdd = sc.parallelize([1,2,3,4,5])
rdd  打印 ParallelCollectionRDD[0] at parallelize at PythonRDD.scala:195

# getNumPartitions() 方法查看list被分成了几部分
rdd.getNumPartitions()  打印结果:2
# glom().collect()查看分区状况
rdd.glom().collect() 打印结果: [[1, 2], [3, 4, 5]] 

2.第二种进入方式:
可直接执行 spark-shell,也可以执行 spark-shell --master local[2]
多线程方式:运行 spark-shell --master local[N] 读取 linux本地文件数据
通过本地 N 个线程跑任务,只运行一个 SparkSubmit 进程
利用 spark-shell --master local[N] 读取本地数据文件实现单词计数
master local[N]:采用本地单机版的来进行任务的计算,N是一个正整数,它表示本地采用N个线程来进行任务的计算,会生成一个SparkSubmit进程
3.需求:
读取本地文件,实现文件内的单词计数。
本地文件 /root/scala/words.txt 内容如下:
hello me
hello you
hello her
4.编写 scala 代码:
此处应使用spark-shell --master local[2]进行操作,如果使用spark-shell会报错

sc.textFile("file:///root///scala///words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
输出
 res0: Array[(String, Int)] = Array((hello,3), (me,1), (you,1), (her,1))

在hive中执行 select * from 表名;即能运行 hive on spark引擎进行计算,yarn的web UI页面中,点击对应运行的spark程序查看运行信息和报错信息

如果再执行 hive on spark任务时出现以下错误信息(要看该yarn任务程序对应的日志信息):

ERROR client.RemoteDriver: Failed to start SparkContext: java.lang
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值