HDFS patch前后Ganglia看到running processes变化的分析

2019-03-28 13:53|来源: 网络

Ganglia running processes是怎么算出来的?ganglia是通过 cat /proc/loadavg获得running processes的。
可得到如下值:0.00 0.28 0.61 1/591 2993。其中,1是running process,591是total process。

为了追踪ganglia图上突然出现的14个running processes,调查了一下,ps Haxh查询出来的total processes和/proc/loadavg的total processes是一致的,状态为R的即是running process。于是又写了个脚本,在启动namenode的期间,每隔0.5秒打印出/proc/loadavg 和 ps Haxh的数据,查看何时出现14个running processes的。

最后发现,不管有没有这个patch,都有可能出现running processes从1上升至6,甚至14的情况。这些processes是namenode的子线程,在某些情况下状态为Rl,R是运行态,l是多线程,在/proc/loadavg中被计算成了running processes。这些子线程运行的时间很短,ganglia是每分钟获得一次数据,很有可能没有采集到。

因此,我之前测试时ganglia图示上的差别,只是巧合,导致我认为加上patch之后有问题。我通过几次实验,看到没有patch时,也会出现ganglia图中running processes上升的情况。


PROCESS STATE CODES
       Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process.
       D    Uninterruptible sleep (usually IO)
       R    Running or runnable (on run queue)
       S    Interruptible sleep (waiting for an event to complete)
       T    Stopped, either by a job control signal or because it is being traced.
       W    paging (not valid since the 2.6.xx kernel)
       X    dead (should never be seen)
       Z    Defunct ("zombie") process, terminated but not reaped by its parent.

       For BSD formats and when the stat keyword is used, additional characters may be displayed:
       <    high-priority (not nice to other users)
       N    low-priority (nice to other users)
       L    has pages locked into memory (for real-time and custom IO)
       s    is a session leader
       l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
       +    is in the foreground process group

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

相关问答

更多
  • hadoop fs -chomd +x /upload/Hello 你这句话是错误的,chmod使用u+x 试试 ,不能单独使用+x来修改文件的权限.
  • 假设您可以通过某种方式知道要在大型语料库中处理哪些x文件,可以使用org.apache.hadoop.mapreduce.lib.input.FileInputFormat.setInputPathFilter(Job, Class)方法来配置你的工作。 你需要传递一个实现PathFilter的类。 Hadoop将创建这个类的一个新实例,并将通过boolean accept(Path path)方法呈现哪些文件在语料库中。 然后,您可以使用此选项将文件过滤为针对实 ...
  • 当在HDFS中存储文件时,jobtracker和tasktracker没有出现,jobtracker和tasktracker正在处理恶魔,而Namenode,datanode和secondary namenode是存储恶魔。 因此,当jobtracker和tasktracker关闭时,您可以将文件存储在HDFS中。 When storing file in HDFS, jobtracker and tasktracker doesn't come into picture, jobtracker and t ...
  • 这将取决于生成这些文件的过程。 例如,当MapReduce生成输出时,它总是生成一个目录,然后在该目录内的每个reducer上创建一个输出文件。 这样做是为了使每个减速器可以独立创建其输出。 从Spark的CSV软件包来看,它预计会输出到单个文件。 所以也许单个文件的CSV是由Spark和MapReduce的目录生成的。 为尽可能通用,执行以下操作可能是一个好主意:检查相关文件是否为目录。 如果没有,请检查扩展名。 如果是,请查看目录内文件的扩展名。 这应该适用于您的每种情况。 请注意,某些输入格式(例如M ...
  • 我不确定这是否可以配置 - DistributedFileSystem的源代码(第150行)调用似乎是硬编码的getHomeDirectory: @Override public Path getHomeDirectory() { return makeQualified(new Path("/user/" + dfs.ugi.getShortUserName())); } 如果您希望能够更改此选项,您有两种可能的选择: 提交一张票给hadoop询问新功能 - 请参阅此链接 自己修改源代码并在整个集群 ...
  • 它的权限被拒绝错误。 您正在以user身份运行该命令。 只需在命令之前运行su hduser (该错误指出hduser具有所需的权限)。 或者用chmod授予user所需的权限。 Its a permission denied error. You are running the command as user. Just run su hduser before your command (the error states that hduser has the required permissions) ...
  • 您可以尝试在datanode上停止cloudera代理。 sudo service cloudera-scm-agent hard_stop_confirmed 代理停止后,您只需从hdfs实例页面中删除该datanode即可 希望这有效 You can try to stop cloudera agent on the datanode. sudo service cloudera-scm-agent hard_stop_confirmed After the agent is stopped, you ...
  • 首先,您需要在类路径中添加一些Hadoop库。 没有这些,不,那些代码将不起作用。 它将如何知道masternode的位置以及slavenodes的位置? 从新的new Configuration(); 和随后的conf.get("fs.defaultFS") 。 它读取HADOOP_CONF_DIR环境变量的core-site.xml并返回namenode的地址。 客户端只需与namenode进行通信即可接收datanode的位置,从中可以写入文件块 该程序将文件写回我的本地存储 目前还不清楚你在哪里配置 ...
  • 您可以使用以下格式进行编码: sc.textFile(hdfs://NamenodeIPAddress:Port/DirectoryLocation) example: sc.textFile(hdfs://127.0.0.1:8020/user/movies) 请根据您的位置更改您的名称节点IP地址和路径的IP地址。 希望这可以帮助!!!... You can code in the below format: sc.textFile(hdfs://NamenodeIPAddress:Port/Dir ...
  • 您不清楚是否在与HDFS数据节点相同的计算机上安装了Presto工作程序。 如果还没有, 安装说明将帮助您完成此操作。 在所有数据节点上安装Presto工作器后,Presto应在从本地DFS节点访问数据时自动执行本地读取。 Presto更喜欢在与DFS节点相同的机器上安排工作,但如果该机器过载,它将在另一台机器上安排工作,因此您通常会获得一些远程读取。 大多数读取应该是本地的,您可以使用协调器上的com.facebook.presto.execution:name = NodeScheduler mbean ...