The dcli
utility executes commands across a group of servers on Oracle Big Data Appliance and returns the output. You use dcli
in Chapter 7.
This chapter contains the following sections:
The dcli
utility executes commands on multiple Oracle Big Data Appliance servers using the administrative (eth0) interface to make the connections. You can run the utility from any server.
The dcli
utility requires a passwordless Secure Shell (SSH) between the local server and all target servers. You run the dcli
utility on the local server, and the commands specified in dcli
execute on the target servers.
Two scripts facilitate the use of SSH on Oracle Big Data Appliance: setup-root-ssh
and remove-root-ssh
. These scripts accept two options that are also used by dcli
:
-C
: Targets all the servers in a Hadoop cluster
-g
: Targets a user-defined set of servers
See Table 13-1 for details about these options.
Note:
The Mammoth and Mammoth Reconfiguration utilities require remoteroot
access. However, Oracle Big Data Appliance does not require it for normal operation.To set up passwordless SSH for root:
Connect to an Oracle Big Data Appliance server using PuTTY or a similar utility. Select an SSH connection type.
Log in as root
.
Set up passwordless SSH for root
across the rack:
setup-root-ssh
You see the message "ssh key added" from each server.
You can now run any ssh
command on any server in the rack without entering a password. In addition to dcli
commands, you can use scp
to copy files between servers.
To remove passwordless SSH from root
:
remove-root-ssh
This topic identifies some basic options to the dcli
command. For a complete list of options, see Table 13-1.
To see the dcli
help page, enter the dcli
command with the -h
or --help
options. You can see a description of the commands by entering the dcli
command with no options.
You can identify the servers where you want the commands to run either in the command line or in a file. For a list of default target servers, use the -t
option. To change the target servers for the current command, use the -c
or -g
options described in Table 13-1.
You can manually create files with groups of servers to manage together. For example, you might manage servers 5 to 18 together, because they have no special functions like servers 1 to 4.
You typically specify a command for execution on the target servers on the command line. However, you can also create a command file for a series of commands that you often use together or for commands with complex syntax. See the -x
option in Table 13-1.
You can also copy files to the target servers without executing them by using the -f
option.
You can request more information with the -v
option or less information with the -n
option. You can also limit the number of returned lines with the --maxlines
option, or replace matching strings with the -r
option.
Following are examples of various output levels using a simple example: the Linux date
command.
Note:
The output from only one server (node07) is shown. The syntax in these examples executes thedate
command on all servers.This is the default output, which lists the server followed by the date.
# dcli date bda1node07-adm.example.com: Tue Feb 14 10:22:31 PST 2012
The minimal output returns OK
for completed execution:
# dcli -n date OK: ['bda1node07.example.com']
Verbose output provides extensive information about the settings under which the command ran:
dcli -v dateoptions.nodes: Noneoptions.destfile: Noneoptions.file: Noneoptions.group: dcserversoptions.maxLines: 100000options.listNegatives: Falseoptions.pushKey: Falseoptions.regexp: Noneoptions.sshOptions: Noneoptions.scpOptions: Noneoptions.dropKey: Falseoptions.serializeOps: Falseoptions.userID: rootoptions.verbosity 1options.vmstatOps Noneoptions.execfile: Noneargv: ['/opt/oracle/bda/bin/dcli', '-g', 'dcservers', '-v', 'date']Success connecting to nodes: ['bda1node07.example.com']...entering thread for bda1node07.example.com:execute: /usr/bin/ssh -l root bda1node07.example.com ' date' ...exiting thread for bda1node07.example.com status: 0bda1node07.example.com: Tue Feb 14 10:24:43 PST 2012]
dcli [options] [command]
Parameters
The options described in Table 13-1. You can omit all options to run a command on all servers in the current rack.
Any command that runs from the operating system prompt. If the command contains punctuation marks or special characters, then enclose the command in double quotation marks.
The backslash (\) is the escape character. Precede the following special characters with a backslash on the command line to prevent interpretation by the shell. The backslash is not needed in a command file. See the -x
option for information about command files.
$
(dollar sign)'
(quotation mark)<
(less than)>
(greater than)( )
(parentheses)Option | Description |
---|---|
|
Specifies a comma-separated list of Oracle Big Data Appliance servers where the command is executed |
|
Uses the list of servers in /opt/oracle/bda/cluster-rack-infiniband as the target. See "Identifying the Target Servers". |
|
|
|
Specifies files to be copied to the user's home directory on the target servers. The files are not executed. See the |
|
Specifies a file containing a list of Oracle Big Data Appliance servers where the command is executed. You can use either server names or IP addresses in the file. |
|
Displays a description of the commands |
|
Pushes the |
|
Identifies the user ID for logging in to another server. The default ID is |
|
Identifies the maximum lines of output displayed from a command executed on multiple servers. The default is 10,000 lines. |
|
Abbreviates the output for non-error messages. Only the server name is displayed when a server returns normal output (return code You cannot use the |
|
Replaces the output with the server name for lines that match the specified regular expression |
|
Specifies a string of options that are passed to SSH |
|
Specifies a string of options that are passed to Secure Copy (SCP), when these options are different from sshoptions |
|
Serializes execution over the servers. The default is parallel execution. |
|
Lists the target servers |
|
Drops the keys from the |
|
Displays the verbose version of all messages |
|
Displays the |
|
Displays the syntax of the Linux Virtual Memory Statistics utility ( To enter a --vmstat="-a 3 5" See your Linux documentation for more information about |
|
Specifies a command file to be copied to the user's home directory and executed on the target servers. See the |
0
: The command ran successfully on all servers.
1
: One or more servers were inaccessible or remote execution returned a nonzero value. A message lists the unresponsive servers. Execution continues on the other servers.
2
: A local error prevented the command from executing.
If you interrupt the local dcli
process, then the remote commands may continue without returning their output or status.
Following are examples of the dcli
utility.
This example returns the default list of target servers:
# dcli -t Target nodes: ['bda1node01-adm.example.com', 'bda1node02-adm.example.com', 'bda1node03-adm.example.com', 'bda1node04-adm.example.com', 'bda1node05-adm.example.com', 'bda1node06-adm.example.com', 'bda1node07-adm.example.com', 'bda1node08-adm.example.com', 'bda1node09-adm.example.com']
The next example checks the temperature of all servers:
# dcli 'ipmitool sunoem cli "show /SYS/T_AMB" | grep value' bda1node01-adm.example.com: value = 22.000 degree C bda1node02-adm.example.com: value = 22.000 degree C bda1node03-adm.example.com: value = 22.000 degree C bda1node04-adm.example.com: value = 23.000 degree C . . .