热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kudu故障排除

原文链接 : http://kudu.apache.org/docs/troubleshooting.html译文链接 : http://cwiki.apachecn.org/pages/viewpa

原文链接 : http://kudu.apache.org/docs/troubleshooting.html

译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813626

贡献者 : 小瑶ApacheCNApache中文网

启动错误

Errors During Hole Punching Test ( 穿透测试中的错误 )

Kudu 需要 hole punching capabilities ( 穿透能力 ) 才能有效。穿透支持取决于您的操作系统内核版本和本地文件系统实现。

  • RHELCentOS 6.4 或更高版本,修补到 2.6.32-358 或更高版本的内核版本。未配置的 RHELCentOS 6.4 不包括支持穿透的内核。
  • Ubuntu 14.04 包括 Linux 内核的 3.13 版本,它支持打孔。
  • 较新版本的 EXT4XFS 文件系统支持穿透,但 EXT3 不支持。旧版本的 XFS 不支持穿透返回 EOPNOTSUPP (操作不支持)错误。不支持穿透的 EXT4XFS 的较旧版本会导致 Kudu 发出以下错误消息,并且无法启动:

穿透试验时出错日志块管理器需要一个具有穿透支持的文件系统,如 ext4xfs 。在 el6 上,内核版本 2.6.32-358 或更新版本是必需的。不使用穿透时(以某种效率和可扩展性为代价),重新配置 Kudu--block_manager = file。有关更多信息,请参阅 Kudu 文档细节。原始错误消息如下。

没有穿透支持,日志块管理器不安全使用。它不会删除块,并将消耗更多的磁盘空间。

即使你的环境中无法使用穿透,你仍然可以尝试 Kudu 。通过将 --block_manager = file 标志添加到用于启动主服务器和tablet server的命令,启用文件块管理器而不是日志块管理器。文件块管理器不会与日志块管理器一样缩放。

注意

由于文件块管理器的规模和性能不佳,只能用于小规模的评估和开发。

NTP Clock Synchronization ( NTP 时钟同步 )

对于主服务器和平板电脑服务器守护程序,必须使用 NTP 同步服务器的时钟。另外,最大时钟误差(不要误估为误差)低于可配置的阈值。默认值为 10 秒,但可以使用标志 --max_clock_sync_error_usec 设置。

如果未安装 NTP ,或者如果时钟被报告为不同步,则 Kudu 将不会启动,并会发出如下消息:

F0924 20:24:36.336809 14550 hybrid_clock.cc:191 Couldn't get the current time: Clock unsynchronized. Status: Service unavailable: Error reading clock. Clock considered unsynchronized.

如果 NTP 安装并同步,但最大时钟错误太高,用户将看到如下消息:

Sep 17, 8:13:09.873 PM FATAL hybrid_clock.cc:196 Couldn't get the current time: Clock synchronized, but error: 11130000, is past the maximum allowable error: 10000000

或者

Sep 17, 8:32:31.135 PM FATAL tablet_server_main.cc:38 Check failed: _s.ok() Bad status: Service unavailable: Cannot initialize clock: Cannot initialize HybridClock. Clock synchronized but error was too high (11711000 us).

重要

如果已安装 NTP ,用户可以通过运行 ntptime 来监视同步状态。相关值是报告的最大误差。

要安装 NTP ,请对您的操作系统使用相应的命令:

OS ( 操作系统 )Command ( 命令 )
Debian/Ubuntusudo apt-get install ntp
RHEL/CentOSsudo yum install ntp

如果 NTP 已安装但未运行,请使用以下命令之一启动它:

OS ( 操作系统 )Command ( 命令 )
Debian/Ubuntusudo service ntp restart
RHEL/CentOSsudo /etc/init.d/ntpd restart

重要

NTP 需要网络连接,可能需要几分钟才能同步时钟。 在某些情况下,有点网络连接可能使 NTP 将时钟报告为不同步。 一个常见的,虽然临时的解决方法是使用上述命令重新启动 NTP

如果时钟被 NTP 报告为同步,但是最大误差太高,则用户可以通过设置上述标志来将阈值增加到更高的值。 例如,将可能的最大误差增加到 20 秒,标志应该如下设置:--max_clock_sync_error_usec = 20000000

报告 Kudu 崩溃

KuduKudu 遇到崩溃时使用 Google Breakpad 库来生成 minidump 。这些 minidumps 的大小通常只有几 MB ,即使禁用了核心转储生成也会生成这些。在这个时候,只能在 KuduLinux 上生成 minidumps

minidump 文件包含有关崩溃的进程的重要调试信息,包括加载的共享库及其版本,崩溃时运行的线程列表,处理器寄存器的状态和每个线程的堆栈内存副本,以及 CPU 和操作系统版本信息。

也可以强制 Kudu 通过向 kudu-tserverkudu-master 进程发送 USR1 信号来创建一个 minidump ,而不会杀死进程。例如:

sudo pkill -USR1 kudu-tserver

默认情况下,Kudu 将其 minidum 存储在其配置的名为 minidumpsglog 目录的子目录中。可以通过设置 --minidump_path 标志来定制该位置。在删除最旧的之前, Kudu 将只保留一定数量的 minidumps ,以避免用 minidump 文件填满磁盘。可以通过设置 --max_minidumps gflag 来控制将保留的最小数量。

Minidumps 包含特定于创建它们的二进制文件的信息,因此在不访问崩溃的确切二进制文件的情况下不可用,或者非常相似的二进制文件。

重要

Minitump 可以通过电子邮件发送给 Kudu 开发人员或附加到 JIRA ,以帮助 Kudu 开发人员调试崩溃。为了使其有用,开发人员将需要知道 Kudu 的确切版本和发生崩溃的操作系统。请注意,虽然 minidump 不包含堆内存转储,但它确实包含堆栈内存,因此可以将应用程序数据显示在minidump 中。如果机密或个人信息存储在群集上,请不要共享 minidump 文件。

性能故障排除

Kudu追踪

kudu-masterkudu-tserver 守护进程包括基于开源 Chromium 跟踪框架的内置跟踪支持。您可以使用跟踪来帮助诊断延迟问题或 Kudu 服务器上的其他问题。

访问跟踪界面

每个 Kudu 守护进程中,跟踪界面是通过 Web 浏览器访问嵌入式 Web 服务器的一部分。

表 1. 跟踪界面 URL

Daemon ( 守护进程 )URL
Tablet Serverhttp://tablet-server-1.example.com:8050/tracing.html
Masterhttp://master-1.example.com:8051/tracing.html

注意

已知跟踪界面适用于最新版本的 Google Chrome 。其他浏览器可能无法正常工作。

Collecting a trace ( 收集痕迹 )

导航到跟踪界面后,单击屏幕左上角的记录按钮。当开始诊断问题时,首先选择所有类别。单击记录开始记录跟踪。

在跟踪收集期间,事件被收集到内存中的环形缓冲区中。该环形缓冲器的大小固定,最终可以达到100%。但是,在删除旧事件的同时,仍然收集新的事件。记录跟踪时,触发您有兴趣探索的行为或工作负载。

收集数秒后,单击停止。收集的踪迹将被下载并显示。使用 ?键显示有关使用跟踪界面探索跟踪的帮助文本。

Saving a trace ( 保存痕迹 )

您可以将收集的痕迹保存为 JSON 文件,以便以后分析,然后在收集跟踪后单击“保存”。要加载和分析保存的 JSON 文件,请单击加载并选择文件。

RPC Timeout Traces ( RPC超时跟踪 )

如果客户端应用程序遇到 RPC 超时,Kudu  tablet servers WARNING 级别日志应包含包含 RPC 级别跟踪的日志条目。例如:

W0922 00:56:52.313848 10858 inbound_call.cc:193] Call kudu.consensus.ConsensusService.UpdateConsensus
from 192.168.1.102:43499 (request call id 3555909) took 1464ms (client timeout 1000).
W0922 00:56:52.314888 10858 inbound_call.cc:197] Trace:
0922 00:56:50.849505 (+ 0us) service_pool.cc:97] Inserting onto call queue
0922 00:56:50.849527 (+ 22us) service_pool.cc:158] Handling call
0922 00:56:50.849574 (+ 47us) raft_consensus.cc:1008] Updating replica for 2 ops
0922 00:56:50.849628 (+ 54us) raft_consensus.cc:1050] Early marking committed up to term: 8 index: 880241
0922 00:56:50.849968 (+ 340us) raft_consensus.cc:1056] Triggering prepare for 2 ops
0922 00:56:50.850119 (+ 151us) log.cc:420] Serialized 1555 byte log entry
0922 00:56:50.850213 (+ 94us) raft_consensus.cc:1131] Marking committed up to term: 8 index: 880241
0922 00:56:50.850218 (+ 5us) raft_consensus.cc:1148] Updating last received op as term: 8 index: 880243
0922 00:56:50.850219 (+ 1us) raft_consensus.cc:1195] Filling consensus response to leader.
0922 00:56:50.850221 (+ 2us) raft_consensus.cc:1169] Waiting on the replicates to finish logging
0922 00:56:52.313763 (+1463542us) raft_consensus.cc:1182] finished
0922 00:56:52.313764 (+ 1us) raft_consensus.cc:1190] UpdateReplicas() finished
0922 00:56:52.313788 (+ 24us) inbound_call.cc:114] Queueing success response

这些跟踪可以指示请求的哪个部分缓慢。 请将它们包含在与 RPC 延迟异常值相关的错误报告中。

Kernel Stack Watchdog Traces ( 内核堆栈看门狗跟踪 )

每个 Kudu 服务器进程都有一个称为 Stack Watchdog 的后台线程,它监视服务器中的其他线程,以防它们被阻塞超过预期的时间段。 这些跟踪可以指示操作系统问题或瓶颈存储。

当看门狗线程识别线程阻塞的情况时,它会在 WARNING 日志中记录一个条目,如下所示:

W0921 23:51:54.306350 10912 kernel_stack_watchdog.cc:111] Thread 10937 stuck at /data/kudu/consensus/log.cc:505 for 537ms:
Kernel stack:
[] do_get_write_access+0x29d/0x520 [jbd2]
[] jbd2_journal_get_write_access+0x31/0x50 [jbd2]
[] __ext4_journal_get_write_access+0x38/0x80 [ext4]
[] ext4_reserve_inode_write+0x73/0xa0 [ext4]
[] ext4_mark_inode_dirty+0x4c/0x1d0 [ext4]
[] ext4_dirty_inode+0x40/0x60 [ext4]
[] __mark_inode_dirty+0x3b/0x160
[] file_update_time+0xf2/0x170
[] __generic_file_aio_write+0x230/0x490
[] generic_file_aio_write+0x88/0x100
[] ext4_file_write+0x61/0x1e0 [ext4]
[] do_sync_readv_writev+0xfb/0x140
[] do_readv_writev+0xd6/0x1f0
[] vfs_writev+0x46/0x60
[] sys_pwritev+0xa2/0xc0
[] system_call_fastpath+0x16/0x1b
[] 0xffffffffffffffff
User stack:
@ 0x3a1ace10c4 (unknown)
@ 0x1262103 (unknown)
@ 0x12622d4 (unknown)
@ 0x12603df (unknown)
@ 0x8e7bfb (unknown)
@ 0x8f478b (unknown)
@ 0x8f55db (unknown)
@ 0x12a7b6f (unknown)
@ 0x3a1b007851 (unknown)
@ 0x3a1ace894d (unknown)
@ (nil) (unknown)

这些跟踪可用于诊断根源于延迟问题(由 Kudu 以下的系统引起),如磁盘控制器或文件系统。

使用 Kudu 的问题

ClassNotFoundException:com.cloudera.kudu.hive.KuduStorageHandler

尝试通过 Hive 使用 Kudu 表时,用户将遇到此异常。 这不是一个丢失的 jar 的情况,而只是 ImpalaHive 中的 Kudu 元数据存储在其他工具(包括 Hive 本身和 Spark )中无法读取的格式。  Hive 用户没有解决方法。  Spark 用户需要创建临时表。


推荐阅读
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
author-avatar
承志68694849
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有