HDDS-342. Add example byteman script to print out hadoop rpc traffic.
Contributed by Elek, Marton.
This commit is contained in:
parent
4c25f37c6c
commit
af4b705b5f
31
dev-support/byteman/README.md
Normal file
31
dev-support/byteman/README.md
Normal file
@ -0,0 +1,31 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
This folder contains example byteman scripts (http://byteman.jboss.org/) to help
|
||||
Hadoop debuging.
|
||||
|
||||
As the startup script of the hadoop-runner docker image supports byteman
|
||||
instrumentation it's enough to set the URL of a script to a specific environment
|
||||
variable to activate it with the docker runs:
|
||||
|
||||
|
||||
```
|
||||
BYTEMAN_SCRIPT_URL=https://raw.githubusercontent.com/apache/hadoop/trunk/dev-support/byteman/hadooprpc.btm
|
||||
```
|
||||
|
||||
For more info see HADOOP-15656 and HDDS-342
|
||||
|
44
dev-support/byteman/hadooprpc.btm
Normal file
44
dev-support/byteman/hadooprpc.btm
Normal file
@ -0,0 +1,44 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#
|
||||
# This script instruments hadoop rpc layer to print out all the request/response messages to the standard output.
|
||||
#
|
||||
|
||||
RULE Hadoop RPC request
|
||||
INTERFACE ^com.google.protobuf.BlockingService
|
||||
METHOD callBlockingMethod
|
||||
IF true
|
||||
DO traceln("--> RPC message request: " + $3.getClass().getSimpleName() + " from " + linked(Thread.currentThread(), "source"));
|
||||
traceln($3.toString())
|
||||
ENDRULE
|
||||
|
||||
|
||||
RULE Hadoop RPC response
|
||||
INTERFACE ^com.google.protobuf.BlockingService
|
||||
METHOD callBlockingMethod
|
||||
AT EXIT
|
||||
IF true
|
||||
DO traceln("--> RPC message response: " + $3.getClass().getSimpleName() + " to " + unlink(Thread.currentThread(), "source"));
|
||||
traceln($!.toString())
|
||||
ENDRULE
|
||||
|
||||
|
||||
RULE Hadoop RPC source IP
|
||||
CLASS org.apache.hadoop.ipc.Server$RpcCall
|
||||
METHOD run
|
||||
IF true
|
||||
DO link(Thread.currentThread(), "source", $0.connection.toString())
|
||||
ENDRULE
|
@ -29,3 +29,5 @@ LOG4J.PROPERTIES_log4j.rootLogger=INFO, stdout
|
||||
LOG4J.PROPERTIES_log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
LOG4J.PROPERTIES_log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
LOG4J.PROPERTIES_log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||
#Enable this variable to print out all hadoop rpc traffic to the stdout. See http://byteman.jboss.org/ to define your own instrumentation.
|
||||
#BYTEMAN_SCRIPT_URL=https://raw.githubusercontent.com/apache/hadoop/trunk/dev-support/byteman/hadooprpc.btm
|
||||
|
Loading…
Reference in New Issue
Block a user