大数据常见运维问题汇总

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据常见运维问题汇总

大数据运维问题:



hadoop:

1.集群配置好开启环境jps,但是少一个node?

解决办法:

关闭集群:sbin/stop-all.sh【只在master上操作】

删除/usr/local/src/hadoop-2.6.1/dfs/name 下面文件 【每个节点操作】

删除/usr/local/src/hadoop-2.6.1/dfs/data 下面文件 【每个节点操作】

删除/usr/local/src/hadoop-2.6.1/tmp 下面文件 【每个节点操作】

删除/usr/local/src/hadoop-2.6.1/logs 下面文件 【每个节点操作】

重新格式化 hadoop namenode -format  【只在master上操作】

启动集群:sbin/start-all.sh【只在master上操作】


2.在yarn集群跑spark测试代码看不到结果,hadoop和spark历史进程安装实践.

使用Yarn 作为集群管理器,启动Spark 时,无法再从SparkUI-4040 端口查看相应的信息。只能从Hadoop 的Yarn、历史服务器查看,但是默认是没有开启。


配置历史服务器:


(1). HDFS 配置


确保你的Hadoop 已经完成配置,并且已经能够正常启动。


下面,在已有的Hadoop 配置上,增加配置。


cd $HADOOP_HOME/etc/hadoop
mapred-site.xml文件
<!--Spark Yarn-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
yarn-site.xml文件
<!--Spark Yarn-->
<!-- 是否开启聚合日志 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 配置日志服务器的地址,work节点使用 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs/</value>
</property>
<!-- 配置日志过期时间,单位秒 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>

3.hadoop的文件不能下载以及YARN中Tracking UI不能访问历史日志


解决方法:windows系统不能解析域名所致,把hosts文件hostname复制到windows的hosts中


4.yarn资源被占用


报内存不足

Container [pid=8468,containerID=container_1594198338753_0001_01_000002] is running 318740992B beyond the 'VIRTUAL' memory limit. Current usage: 111.5 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1594198338753_0001_01_000002 :

解决办法:在 hadoop102 的/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml 文件中增加如下配置,然后分发到 hadoop103、hadoop104 服务器上,并重新启动集群:


<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

注意:如果测试过程中,出现异常可以在 yarn-site.xml 中设置虚拟内存检测为 false分发配置并重启集群

<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

Hive:

1.在hive中关于大表执行join时,产生oom的处理建议


Hive中小表与大表关联(join)的性能分析 link→ Hive中小表与大表关联(join)的性能分析_刘健男_新浪博客


2.hive查询显示表头修改:


在hive安装目录下/conf/hive-site.xml配置文件里添加如下:


只添加前面部分,查询会显示tablename.column.name


<property>
<name>hive.resultset.use.unique.column.names</name>
<value>false</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>


3.hive数据倾斜


(1)空值产生的数据倾斜


如日志中,常有信息丢失的问题,例如日志中的user_id,如果取其中的user_id和用户表中的user_id关联,就会遇到数据倾斜的问题


-- user_id 为空的不参与关联操作


select * from log a join users b on a.user_idisnotnulland a.user_id = b.user_id
union all
select * from log a where a.user_id is null


(2)不同的数据类型关联产生数据倾斜


用户表中user_id 字段为 int ,log表中user_id字段类型既有int类型也有string类型。当按照user_id 进行两个表的join操作时,默认的Hash操作进行分配,这样会导致所有String类型的id的记录分配到一个Reducer中

-- 把不同类型的字段同意转换为String类型后 进行关联

select * from users a left outer join logs b on a.user_id = cast(b.user_idas String);


Spark

1.Spark shell启动报错(yarn-client&yarn-cluster):Yarn application has already ended! It might have been killed or unable to launch...

启动日志,错误信息如下:

847efab2a3630831955c20748949ae85_6fd3b09b1edba6886083283525b1830b.png

Yarn application has already ended! It might have been killed or unable to launch application master",这个可是一个异常,打开mr管理页面,http://master:8088/

d0e76dc0b6100a39a3115271ded32c09_0bdfc1d339bf0ec83efbda473bcfd65f.png

重点在红框处,2.2g的虚拟内存实际值,超过了2.1g的上限。也就是说虚拟内存超限,contrainer没启动.


解决方案


yarn-site.xml 增加配置:


<!--以下为解决spark-shell 以yarn client模式运行报错问题而增加的配置,估计spark-summit也会有这个问题。2个配置只用配置一个即可解决问题,当然都配置也没问题-->
<!--虚拟内存设置是否生效,若实际虚拟内存大于设置值 ,spark 以client模式运行可能会报错,"Yarn application has already ended! It might have been killed or unable to l"-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<!--配置虚拟内存/物理内存的值,默认为2.1,物理内存默认应该是1g,所以虚拟内存是2.1g-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>

修改后,重新启动hadoop,spark-shell. 问题解决


2.spark-submit运行scala代码,出现ClassNotFoundException

首先检查代码jar包路径是否完整,其次在IDEA查看jar包是否存在运行的主类,是则重新打包。


3.spark代码模式与提交命令模式不一样,导致运行出错

注:代码用什么模式,启动命令用什么模式,代码不加local可以用yarn集群模式启动


坑 1 : scala代码为 setMaster(local) 则用local模式启动 ,要用yarn集群模式启动 会出现错误。


代码中:

val userScore = new SparkConf().setMaster("local").setAppName("UserScore")


启动命令:spark-submit --class UserScore sparktest-1.0-SNAPSHOT.jar


坑2: maven install打包jar ,启动--class 后面直接加类名 ,例想启动userwatchlist ,从java目录下开始写,有目录写目录,启动命令直接写 --class base.teacheruserwatchlist + jar包名即可



相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
4月前
|
运维 算法 数据可视化
【2021 高校大数据挑战赛-智能运维中的异常检测与趋势预测】2 方案设计与实现-Python
文章详细介绍了参加2021高校大数据挑战赛中智能运维异常检测与趋势预测任务的方案设计与Python实现,包括问题一的异常点和异常周期检测、问题二的异常预测多变量分类问题,以及问题三的多变量KPI指标预测问题的算法过程描述和代码实现。
76 0
|
2月前
|
机器学习/深度学习 人工智能 运维
智能运维:大数据与AI的融合之道###
【10月更文挑战第20天】 运维领域正经历一场静悄悄的变革,大数据与人工智能的深度融合正重塑着传统的运维模式。本文探讨了智能运维如何借助大数据分析和机器学习算法,实现从被动响应到主动预防的转变,提升系统稳定性和效率的同时,降低了运维成本。通过实例解析,揭示智能运维在现代IT架构中的核心价值,为读者提供一份关于未来运维趋势的深刻洞察。 ###
87 10
|
5月前
|
数据采集 运维 Cloud Native
Flink+Paimon在阿里云大数据云原生运维数仓的实践
构建实时云原生运维数仓以提升大数据集群的运维能力,采用 Flink+Paimon 方案,解决资源审计、拓扑及趋势分析需求。
18515 54
Flink+Paimon在阿里云大数据云原生运维数仓的实践
|
4月前
|
存储 运维 Cloud Native
"Flink+Paimon:阿里云大数据云原生运维数仓的创新实践,引领实时数据处理新纪元"
【8月更文挑战第2天】Flink+Paimon在阿里云大数据云原生运维数仓的实践
281 3
|
4月前
|
机器学习/深度学习 运维 算法
【2021 高校大数据挑战赛-智能运维中的异常检测与趋势预测】1 赛后总结与分析
对2021高校大数据挑战赛中智能运维异常检测与趋势预测赛题的赛后总结与分析,涉及赛题解析、不足与改进,并提供了异常检测、异常预测和趋势预测的方法和模型选择的讨论。
121 0
【2021 高校大数据挑战赛-智能运维中的异常检测与趋势预测】1 赛后总结与分析
|
5月前
|
分布式计算 运维 DataWorks
MaxCompute操作报错合集之用户已在DataWorks项目中,并有项目的开发和运维权限,下载数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5月前
|
SQL Java 大数据
开发与运维应用问题之大数据SQL数据膨胀如何解决
开发与运维应用问题之大数据SQL数据膨胀如何解决
|
5月前
|
数据采集 监控 关系型数据库
大数据运维之数据质量管理
大数据运维之数据质量管理
121 0
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
59 4
|
17天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####