大数据常见运维问题汇总

本文涉及的产品
日志服务 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包名即可



相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
11月前
|
Prometheus 运维 监控
直击运维痛点,大数据计算引擎 EasyMR 的监控告警设计优化之路
监控告警在企业保障系统的稳定性和事故快速恢复的全周期链路中都是至关重要的一环。在新版本的 EasyMR 中袋鼠云开发团队也对监控告警功能进行了全新的优化,通过本文和大家分享监控告警功能的设计思路以及碰到各类问题痛点的解决方法。
339 0
|
存储 机器学习/深度学习 自然语言处理
大数据数据存储的搜索引擎Elasticsearch的集群运维的集群状态
大数据数据存储的搜索引擎Elasticsearch是一种常用的全文搜索引擎,支持对文本数据的实时搜索和分析。
89 1
|
存储 运维 监控
大数据数据存储的搜索引擎Elasticsearch的集群运维的集群备份
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
67 0
|
存储 运维 监控
大数据数据存储的搜索引擎Elasticsearch的集群运维的集群监控
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
84 0
|
存储 运维 监控
大数据数据存储的搜索引擎Elasticsearch的集群运维的集群安全
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
74 0
|
存储 运维 监控
大数据数据存储的搜索引擎Elasticsearch的集群运维的集群扩展
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
64 0
|
存储 SQL 分布式计算
带你读《企业级云原生白皮书项目实战》——5.2.7 运维
带你读《企业级云原生白皮书项目实战》——5.2.7 运维
110 0
|
2月前
|
运维 Linux 程序员
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
|
27天前
|
运维 Linux Shell
运维:Linux服务器崩了怎么办,快来看看这份”急救命令指南“吧!
当服务器出现问题,如崩溃、内存耗尽或CPU使用率过高时,运维工程师需要保持冷静,并通过一系列Shell命令来诊断和解决。首先,检查是否有异常SSH登录活动,查看`/etc/passwd`和`.bash_history`文件,以及用户最近的登录信息。接着,监控网络连接和端口,使用`netstat`和`lsof`命令找出资源占用高的进程,并查看进程启动时间和详细信息。同时,排查可能的恶意文件,检查定时任务和服务配置以确保没有异常启动项。最后,分析系统日志,如`/var/log`目录下的各种日志文件,找出潜在问题。通过这些步骤,可以有效定位和解决服务器故障。
|
2月前
|
消息中间件 运维 Linux
运维最全Linux 命令大全之scp命令_linux scp 指令(1),2024年最新从消息中间件看分布式系统的多种套路
运维最全Linux 命令大全之scp命令_linux scp 指令(1),2024年最新从消息中间件看分布式系统的多种套路

热门文章

最新文章