如何通过CM升级Kafka0.11及Spark2.2
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
在前面的文章《CDH5.13和CM5.13的新功能》中Fayson介绍过Cloudera发布CDH5.13时,同时也发布了Kafka3.0版本(即社区0.11版),目前社区最新版本为1.0。由于Kafka3.0和Spark2.2需要JDK8的支持,所以在升级Kafka3.0和Spark2.2版本时必须先升级JDK版本,可以参考《如何将CDH集群JAVA升级至JDK8》和《如何将Kerberos环境下CDH集群JAVA升级至JDK8》,本文Fayson主要介绍在CDH集群中如何升级Kakfa3.0和Spark2.2。
- 内容概述
1.部署Kafka和Spark的Parcel包
2.CM配置Kafka和Spark的Parcel
3.Kafka和Spark升级
4.功能测试
- 测试环境
1.CM和CDH版本为5.11.2
2.采用sudo权限的ec2-user用户操作
3.RedHat7.2
- 前置条件
1.CM和CDH5.3和更高版本
2.JDK8或以上版本
3.集群已启用Kerberos
2.部署Kafka和Spark的Parcel包
1.在Cloudera官网下载Kafka和Spark的Parcel包
Kafka下载地址
http://archive.cloudera.com/kafka/parcels/3.0/KAFKA-3.0.0-1.3.0.0.p0.40-el7.parcel
http://archive.cloudera.com/kafka/parcels/3.0/KAFKA-3.0.0-1.3.0.0.p0.40-el7.parcel.sha1
http://archive.cloudera.com/kafka/parcels/3.0/manifest.json
Spark下载地址
http://archive.cloudera.com/spark2/parcels/2.2/SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el7.parcel
http://archive.cloudera.com/spark2/parcels/2.2/SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-el7.parcel.sha1
http://archive.cloudera.com/spark2/parcels/2.2/manifest.json
2.创建Kafka和Spark的部署目录,并下载parcle包到相应目录
[ec2-user@ip-172-31-22-86 ~] sudo mkdir -p /var/www/html/kafka3.0
[ec2-user@ip-172-31-22-86 ~] sudo mkdir -p /var/www/html/spark2.2
Kafka3.0目录
Spark2.2目录
3.测试Kafka和Spark的Parcel是否部署成功
Kafka访问:
Spark访问:
3.CM中配置Kafka和Spark的Parcel库
1.登录CM,进入Parcel配置界面
2.点击“配置”
3.增加Kafka和Spark的Parcel库配置
这里Fayson使用的是AWS内网地址。
4.点击“保存更改”,查看配置成功。此时如果能看到Kafka3.0为可以“下载”状态,已有的Kafka2.2为可以“停用”状态,则表示配置Parcel库成功。注意此时Kafka2.2依旧为使用状态。
4.Kafka3.0升级
1.下载、分配并激活Kafka3.0的Parcel包
2.回到CM主页,重新部署Kafka客户端并重启Kafka集群
3.重启过期服务
4.重启
5.重启成功,完成Kafka3.0版本升级
5.Spark2.2升级
1.更新Spark2的CSD文件
CSD文件下载地址
http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.2.0.cloudera1.jar
将下载的文件替换掉/opt/cloudera/csd目录下spark2其它版本的jar
2.重启cloudera-scm-server服务
[ec2-user@ip-172-31-22-86 csd]$ sudo systemctl restart cloudera-scm-server
3.点击“下载”Spark2.2.0的Parcel
4.点击“分配”
5.点击“激活”
回到主页根据提示重启服务,完成Spark2的升级
6.验证Spark2版本是否为我们升级后的版本
有如上截图显示则表示升级成功。
6.测试Spark2和Kafka3.0
- Kafka测试
由于集群已启用Kerberos,所以在测试Spark的时候需要加载KAFKA_OPTS的环境变量,具体可以参考Fayson前面的文章《如何通过Cloudera Manager为Kafka启用Kerberos及使用》
1.创建一个mytopic的topic
kafka-topics --create --zookeeper ip-172-31-21-45.ap-southeast-1.compute.internal:2181 --replication-factor 3 --partitions 1 --topic mytopic
2.向mytopic生产消息
[ec2-user@ip-172-31-21-45 ~]$ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/ec2-user/jaas-keytab.conf"
[ec2-user@ip-172-31-21-45 ~]$ kafka-console-producer --broker-list ip-172-31-26-80.ap-southeast-1.compute.internal:9092,ip-172-31-21-45.ap-southeast-1.compute.internal:9092,ip-172-31-26-102.ap-southeast-1.compute.internal:9092 --topic mytopic --producer.config client.properties
3.消费mytopic消息
[root@ip-172-31-21-45 ec2-user]# export KAFKA_OPTS="-Djava.security.auth.login.config=/home/ec2-user/jaas-keytab.conf"
[root@ip-172-31-21-45 ec2-user]# kafka-console-consumer --topic mytopic --from-beginning --bootstrap-server ip-172-31-26-80.ap-southeast-1.compute.internal:9092,ip-172-31-21-45.ap-southeast-1.compute.internal:9092,ip-172-31-26-102.ap-southeast-1.compute.internal:9092 --consumer.config client.properties
- Spark2测试
[ec2-user@ip-172-31-22-86 jars]$ spark2-submit --class org.apache.spark.examples.SparkPi --master yarn-client --num-executors 4 --driver-memory 1g --driver-cores 1 --executor-memory 1g --executor-cores 1 /opt/cloudera/parcels/SPARK2/lib/spark2/examples/jars/spark-examples_2.11-2.2.0.cloudera1.jar 10
运行成功
7.常见问题
1.在完成Spark2.2的升级后,在命令行运行spark2-shell命令报错
[ec2-user@ip-172-31-22-86 csd]$ spark2-shell
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/launcher/Main : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
解决方法:在Spark2的配置页面配置JAVA环境变量为JDK8
保存配置并重新部署客户端,问题解决。
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
- Codeforce 712A Memory and Crow
- 每日一水之strcmp用法
- HDU 3782 xxx定律
- HDU 2566 统计硬币
- HDU 2561 第二小整数
- python基础-数据类型与变量
- HDU 2520 我是菜鸟,我怕谁
- HUST 1586 数字排列
- next_permutation(全排列算法)
- Hadoop数据分析平台实战——100HBase和MapReduce整合离线数据分析平台实战——100HBase和MapReduce整合
- Hadoop数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)离线数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)
- HUST 1588 辗转数对
- HUST 1584 摆放餐桌
- HUST 1585 排队
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 离线安装PySCF程序(1.5及更高版本)
- Python Debug(调试)的终极指南
- Linux下做计算常用的别名alias推荐
- 离线安装支持Intel MKL的R-3.6
- Dalton使用——磷光及其相关过程
- 【赵渝强老师】Flink的Watermark机制(基于Flink 1.11.0实现)
- 在Windows CMD里“使用”常见Linux命令
- 什么是Python中的Dask,它如何帮助你进行数据分析?
- a[i] = i++ 到底对不对?
- 如何监视Python程序的内存使用情况
- df -h和du -sh看到的硬盘使用不相等?
- MyBatis 中的一级和二级缓存
- 使用Cython加速你的Python代码
- 使用Python从PDF文件中提取数据
- 用Docker快速实现SAPT能量分解分析