How Do You Troubleshoot the Error “ERROR: S3 error: 400 (InvalidRequest): The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.”

Problem scenario
Some s3cmd commands work fine.  But others give you this error:
"ERROR: S3 error: 400 (InvalidRequest): The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256."

What can you do to get s3cmd commands to work consistently?

Solution
Upgrade your s3cmd to a newer version.

How Do You Troubleshoot the I.E. Error “Your current security settings do not allow this file to be downloaded”?

Problem scenario
On a Windows server in AWS, you are trying to download a file with Internet Explorer.  You get this error: "Your current security settings do not allow this file to be downloaded." How do you solve this problem?

Solution
Using Internet Explorer 11, go to Internet Options.  Go to the Security tab.  Click on "Internet."  Scroll down to "Downloads."  For "File download" (beneath "Downloads"), choose "Enable."  Click "Ok" twice. 

If you want to revert your server to this level of security, simply undo the setting change after you download the file.

How Do You Install Maven on Any Type of Linux?

Problem scenario
You want to install Maven with a script.  You want the script to work regardless of what distribution of Linux you are using (e.g., Ubuntu/Debian, RedHat (including CentOS/Fedora), or SUSE).  How do you write a script to install the latest version of Maven?

Solution
Update:  This script was updated on 9/23/19.

1.  Create this file in /tmp/ and call it maven.sh.  Below is the content:

#!/bin/bash
# Written by www.continualintegration.com

mvnversion=3.6.2  # Change this version as necessary

distro=$(cat /etc/*-release | grep NAME)

debflag=$(echo $distro | grep -i "ubuntu")
if [ -z "$debflag" ]
then   # If it is not Ubuntu, test if it is Debian.
  debflag=$(echo $distro | grep -i "debian")
  echo "determining Linux distribution..."
else
   echo "You have Ubuntu Linux!"
fi

rhflag=$(echo $distro | grep -i "red*hat")
if [ -z "$rhflag" ]
then   #If it is not RedHat, see if it is CentOS or Fedora.
  rhflag=$(echo $distro | grep -i "centos")
  if [ -z "$rhflag" ]
    then    #If it is neither RedHat nor CentOS, see if it is Fedora.
    echo "It does not appear to be CentOS or RHEL..."
    rhflag=$(echo $distro | grep -i "fedora")
    fi
fi

if [ -z "$rhflag" ]
  then
  echo "...still determining Linux distribution..."
else
  echo "You have a RedHat distribution (e.g., CentOS, RHEL, or Fedora)"
  yum -y install java-1.8.0-openjdk*
  JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
  echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk' >> ~/.bashrc
  source ~/.bashrc
  source /etc/environment
fi

if [ -z "$debflag" ]
then
  echo "...still determining Linux distribution..."
else
   echo "You are using either Ubuntu Linux or Debian Linux."
   apt-get -y update # This is necessary on new AWS Ubuntu servers.
   apt -y install openjdk-9-jre-headless default-jdk
   apt -y install openjdk-11-jre-headless
   echo "If you see an error about an installation candidate, do not be concerned"
   sleep 2
fi

suseflag=$(echo $distro | grep -i "suse")
if [ -z "$suseflag" ]
then
  if [ -z "$debflag" ]
  then
    if [ -z "$rhflag" ]
      then
      echo "*******************************************"
      echo "Could not determine the Linux distribution!"
      echo "Installation aborted. Nothing was done."
      echo "******************************************"
      exit
    fi
  fi
else
   zypper -n install java-1_8_0-openjdk java-1_8_0-openjdk-devel
fi

curl http://ftp.wayne.edu/apache/maven/maven-3/$mvnversion/binaries/apache-maven-$mvnversion-bin.tar.gz > /bin/apache-maven-$mvnversion-bin.tar.gz

cd /bin
tar -xvf apache-maven-$mvnversion-bin.tar.gz
mkdir -p /usr/local/apache-maven
mv /bin/apache-maven-$mvnversion/* /usr/local/apache-maven

if [ -z "$debflag" ]
then
  /usr/bin/ln -s /usr/local/apache-maven/bin/mvn /bin/mvn
else
  /bin/ln -s /usr/local/apache-maven/bin/mvn /bin/mvn
fi

echo 'PATH="$PATH":/usr/local/apache-maven/bin/' > /etc/profile.d/maven.sh

echo 'To finish the process, run this command:'
echo 'export PATH="$PATH":/usr/local/apache-maven/bin/'

echo "Then run 'mvn -version' to see if Maven is installed."

2.  Run it with this command: sudo -s source /tmp/maven.sh

How Do You Install Java on Any Type of Linux with a Script?

Problem scenario
You want a Bash script to install Java on Linux.  (If you want to install Java on Windows, see this posting.)  You want it to work regardless if it is a Linux that is part of the Debian/Ubuntu family, RedHat family (e.g., CentOS/Fedora), or SUSE.  What do you do to write a universal script to make it easy for other systems administrators to install Java (or potentially automate the process across several servers)?

Solution
1.  Create a script.  Call it java.sh and place it in the /tmp/ directory.  Here is the content of the script to install Java:

#!/bin/bash
# Written by www.continualintegration.com

distro=$(cat /etc/*-release | grep NAME)

debflag=$(echo $distro | grep -i "ubuntu")
if [ -z "$debflag" ]
then   # If it is not Ubuntu, test if it is Debian.
  debflag=$(echo $distro | grep -i "debian")
  echo "determining Linux distribution..."
else
   echo "You have Ubuntu Linux!"
fi

rhflag=$(echo $distro | grep -i "red*hat")
if [ -z "$rhflag" ]
then   #If it is not RedHat, see if it is CentOS or Fedora.
  rhflag=$(echo $distro | grep -i "centos")
  if [ -z "$rhflag" ]
    then    #If it is neither RedHat nor CentOS, see if it is Fedora.
    echo "It does not appear to be CentOS or RHEL..."
    rhflag=$(echo $distro | grep -i "fedora")
    fi
fi

if [ -z "$rhflag" ]
  then
  echo "...still determining Linux distribution..."
else
  echo "You have a RedHat distribution (e.g., CentOS, RHEL, or Fedora)"
  yum -y install java-1.8.0-openjdk*
  JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
  echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk' >> ~/.bashrc
  source ~/.bashrc
  source /etc/environment
fi

if [ -z "$debflag" ]
then
  echo "...still determining Linux distribution..."
else
   echo "You are using either Ubuntu Linux or Debian Linux."
   apt-get -y update # This is necessary on new AWS Ubuntu servers.
   apt-get -yo Dpkg::Options::="--force-overwrite" install openjdk-11-jdk
   apt-get -y install openjdk-11-source
   echo 'JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> ~/.bashrc
   echo 'PATH=$PATH:/usr/lib/jvm/java-11-openjdk/bin' >> ~/.bashrc
   source ~/.bashrc
   source /etc/environment
fi

suseflag=$(echo $distro | grep -i "suse")
if [ -z "$suseflag" ]
then
  if [ -z "$debflag" ]
  then
    if [ -z "$rhflag" ]
      then
      echo "*******************************************"
      echo "Could not determine the Linux distribution!"
      echo "Installation aborted. Nothing was done."
      echo "******************************************"
      exit
    fi
  fi
else
   zypper -n install java-1_8_0-openjdk java-1_8_0-openjdk-devel
fi

2.  Run it like this:
sudo bash /tmp/java.sh

3. You are done. Please read this last section only if you are trying to deploy Apache Spark 2.2.1. In AWS the Ubuntu repos support version 9. But Spark 2.2.1 needs Java 8 and won't work with Java 9; you may need to change the script if you are trying to deploy Spark 2.2.1.

To have a script install Java 8 on Ubuntu or Debian Linux, replace these consecutive lines in the script (in an else/fi block for Ubuntu/Debian Linux):
  echo "You are using either Ubuntu Linux or Debian Linux."
   apt-get -y update # This is necessary on new AWS Ubuntu servers.
apt-get -o Dpkg::Options::="--force-overwrite" install openjdk-11-jdk
apt-get -y install openjdk-11-source
echo 'JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> ~/.bashrc
echo 'PATH=$PATH:/usr/lib/jvm/java-11-openjdk/bin' >> ~/.bashrc
source ~/.bashrc
source /etc/environment

To be these lines:

   echo "You are using either Ubuntu Linux or Debian Linux."
   apt-get -y update # This is necessary on new AWS Ubuntu servers.
   apt -y install openjdk-8-jre-headless

What Are the Different Acronym Stacks in I.T.?

Question
What are the different acronym stacks in I.T.?

Answer
There are many open source combinations of technologies that are in wide use.  These acronyms referred to as "full stacks" or "stacks" appear in articles and job descriptions.  A full stack is a bundle of software that (includes an OS and) can create a complete and functional product when properly configured.  We will define these acronymous words below.  These words are always in all uppercase.

LAMP stack:  This is probably the most common acronym stack in computing today.  It stands for LinuxApache Web ServerMySQL, and PHP (but the "M" can stand for MariaDB and the "P" can stand for "Perl" or "Python" too).  If you want to test this out yourself as the components are free, see this posting if you are using RedHat.  If you want to deploy it via Kubernetes, see this posting.

LAPP stack:  It stands for LinuxApache Web ServerPostgreSQL, and PHP.  With technology changing rapidly don't be surprised if the "P" can stand for "Perl" or "Python" too.  If you want to test this out yourself as the components are free, see this posting.  If you want experience setting up LAPP as a security checking mechanism, you may want to see this post for basic front-end authentication or this post for a more complete front-end authentication application.

MEAN stack:  It stands for MongoDB, Express.js, AngularJS, and Node.js.  MongoDB is a NoSQL database (which uses key-value pairs and JSON instead of relational rowsets that typify SQL databases).  Express.js can be referred to as merely "Express" (as mean.io used to show).  Express.js is a "minimalist web framework" (expressjs.com).  AngularJS is a front-end web application framework that enables dynamic viewing of content (Angularjs.org).  It complements Express.  Node.js is a type of server-side JavaScript (shiffman.net).  Rather than having web browsers download the code, the code is interpreted on the sever itself.

SMACK stack:  It stands for Spark, Mesos, Akka, Cassandra, and Kafka (mesosphere.com).  It "is an open source full stack for big data architecture" (taken from a Packt book on Amazon.com). 

  • Spark is an in-memory tool related to Hadoop.  "Apache Spark™ is a fast and general engine for large-scale data processing" (Apache.org).  (To deploy Spark, see this posting.)
  • Apache Mesos is a distributed systems kernel based on the modularity of the Linux kernel (mesos.apache.org).  (To set deploy Mesos, see this posting.)
  • Akka is a distributed systems tool to enable building a concurrent application (Akka.io).   
  • Apache Cassandra is a NoSQL distributed database (O'Reilly Press book on Amazon.com).
  • Apache Kafka is an open source messaging tool for "building real-time data pipelines for streaming" applications (kafka.apache.org).

To disambiguate SMACK vs. SMAC vs. Smack, the following two paragraphs will explain the differences. 

  1. Another technology acronym called Smack is not related to a stack.  This word "Smack" stands for the "Simplified Mandatory Access Control Kernel."  It was implemented into the regular Linux kernel with version 2.6.25 (according to elinux.org).  This [non-stack] "Smack" is not in all uppercase.
  2. There is another technology term called SMAC that is always in all uppercase letters.  This SMAC stands for social, mobile, analytics and cloud, and it is also referred to as "third platform" (www.k3syspro.com/s-m-a-c/). 

Finally Apache can refer to Native American tribes of which Geronimo was a member.  Apache can also refer to a software foundation.

How Do You Delete an AWS Security Group When You Get a Message about It Being Attached to a Network Interface?

Problem scenario
Recently you deployed Kubernetes to AWS using JuJu.  You are now eliminating the Security Groups that it created. You cannot delete a Security Group in AWS.  You get an error about the Security Group being associated with one or more network interfaces.   You cannot detach the network interface.  You even click the "Force detachment" and then click "Yes, Detach."  Nothing works to delete the network interface or remove the Security Group.

Solution
Go to "Load Balancers" in the AWS Console (web UI).  Delete the load balancer that was created by the Juju deployment of Kubernetes.  After one minute you may be able to delete the Security Group that was created for Kubernetes.

How Do You Find the Version of MariaDB That Is Installed on Your Linux Server?

Problem scenario
You want to know what version of MariaDB is installed on your Linux server.  You do not have credentials to log into the SQL prompt.  What OS command can you run to determine the version of MariaDB?

Solution
Run this command: 
mysql -h localhost -V

How Do You Install Splunk Enterprise on a RHEL Server?

Problem scenario
You want to install Splunk Enterprise on your RedHat Enterprise Linux server.  How do you do this?

Solution
You can get a free trial here if you input the data the Splunk company requires and can agree to the terms that they have.  Use an SFTP client (e.g., WinSCP)  to move it to your server.

From the Linux server run this:  sudo yum -y localinstall splunk-*

Run this command: sudo /opt/splunk/bin/splunk version

Read the License Agreement.  If you agree when you get to the end, enter "y" and press enter.  Verify you have Splunk installed with this command: sudo /opt/splunk/bin/splunk version

How Do You Install Hadoop with a Script for Any Type of Linux Server?

Updated on 1/6/21

Problem scenario

You want to install open source Hadoop.  You may want a single-node or multi-node deployment with CentOS/RedHat/Fedora, Debian/Ubuntu, and/or SUSE Linux distributions.  You want to have most of it scripted and have the same script work on any variety of Linux.  How do you install Hadoop quickly with a script that works on almost any type of Linux?

Solution
1.  Log into Linux. Verify you can ping the server by its hostname: The command "ping -c 2 $(hostname)" should work.     Update the /etc/hostname if the ping is not working. This is a command to provide the IP address you will likely need for such an update:

a=$(ip addr show | grep 192.168 | awk '{print $2}') && ${a::-3}

2.a.  This step involves manual commands that depend on your type of Linux.  To find your distribution type, use the command:  cat /etc/*-release

Do one of 2.b., 2.c., or 2.d. depending on the output of the above command.

2.b.  If you are running a RedHat distribution (e.g., CentOS or Fedora), run these two commands:

sudo adduser hduser
sudo passwd hduser  #respond with the password of your choice

2.c.i.  If you are running Ubuntu or a Debian distribution do the following:
sudo adduser hduser  # Answer how you wish to the next prompts.
# For example, you could enter a password twice according to the prompts, then just press enter five times and press "Y" (with no quotes).

2.c.ii.  (This only applies if you are running Ubuntu or Debian).  Open /home/hduser/.bashrc (e.g., with the vi command).  Add four new lines at the very bottom with this content:

PATH="$PATH":/usr/local/hadoop/bin/
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"

2.d.i.  If you are running Linux SUSE run these five commands:

sudo useradd hduser
sudo passwd hduser
sudo mkdir -p /home/hduser/.ssh
sudo groupadd hadoop; sudo usermod -g hadoop hduser  
sudo chown -R hduser:hadoop /home/hduser/.ssh

2.d.ii.   (This only applies if you are running Linux SUSE).  Create /home/hduser/.bashrc with this line (or create a new line in this file and place it at the very bottom):
PATH="$PATH":/usr/local/hadoop/bin/

3.  The rest of these directions should work regardless of your Linux distribution type.  Run these commands:

sudo groupadd hadoop; sudo usermod -g hadoop hduser  # skip this step if running SUSE
su hduser # respond with the password entered earlier
ssh-keygen -t rsa -P "" # press enter to the prompt
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh 127.0.0.1   # respond with 'yes' (with no quote marks) to accept the fingerprint
exit # end the SSH section
exit # return to your regular user account

4.  Create a script (e.g., /tmp/install.sh) with the content below from "#!/bin/bash" to the final "echo ..." statement. 

#!/bin/bash
# Written by continualintegration.com
# Warning: this is intended for a server that has no Hadoop files on it. It uses logic that relies on having no other core-site.xml, mapred-site.xml or yarn-site.xml files.
# It is a basic script to use open source Hadoop on any distribution of Linux. It is not perfect.

version=3.3.0 #change here if there is a higher version of Hadoop than 3.3.0 available

distro=$(cat /etc/*-release | grep NAME)

debflag=$(echo $distro | grep -i "ubuntu")
if [ -z "$debflag" ]
then # If it is not Ubuntu, test if it is Debian.
debflag=$(echo $distro | grep -i "debian")
echo "determining Linux distribution..."
else
echo "You have Ubuntu Linux!"
fi

rhflag=$(echo $distro | grep -i "red*hat")
if [ -z "$rhflag" ]
then #If it is not RedHat, see if it is CentOS or Fedora.
rhflag=$(echo $distro | grep -i "centos")
if [ -z "$rhflag" ]
then #If it is neither RedHat nor CentOS, see if it is Fedora.
echo "It does not appear to be CentOS or RHEL..."
rhflag=$(echo $distro | grep -i "fedora")
fi
fi

if [ -z "$rhflag" ]
then
echo "...still determining Linux distribution..."
else
echo "You have a RedHat distribution (e.g., CentOS, RHEL, or Fedora)"
yum install -y java-1.8.0-openjdk-devel
fi

if [ -z "$debflag" ]
then
echo "...still determining Linux distribution..."
else
echo "You are using either Ubuntu Linux or Debian Linux."
apt-get -y update # This is necessary on new AWS Ubuntu servers.
apt-get -y install openjdk-8-jdk-headless default-jre curl
echo "It may be necessary to try to install different openjdk versions"
apt-get -y install openjdk-11-jdk-headless
ln -s python3 /bin/python
fi

suseflag=$(echo $distro | grep -i "suse")
if [ -z "$suseflag" ]
then
if [ -z "$debflag" ]
then
if [ -z "$rhflag" ]
then
echo "*******************************************"
echo "Could not determine the Linux distribution!"
echo "Installation aborted. Nothing was done."
echo "******************************************"
exit
fi
fi
else
zypper -n install java java-1_8_0-openjdk-devel
ln -s python3 /bin/python
fi

cd /tmp
curl https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-$vers
ion/hadoop-$version.tar.gz > hadoop-$version.tar.gz
tar xzf hadoop-$version.tar.gz
mv hadoop-$version /usr/local/hadoop
echo '
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin' >> ~/.bashrc
source ~/.bashrc
sed -i '/export JAVA_HOME/c\export JAVA_HOME=/usr/.' $(find / -name hadoop-env.sh)
echo '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed 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

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. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>

<property>
<name>fs.default.name</name>
<value>hdfs://localhost:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri has a scheme that determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri has authority that is used to
determine the host, port, etc. for a filesystem.</description>
</property>
</configuration>
' > $(find / -name core-site.xml)


echo '<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed 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. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>

</configuration>' > $(find / -name mapred-site.xml)

echo '<?xml version="1.0"?>
<!--
Licensed 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. See accompanying LICENSE file.
-->
<configuration>

<!-- Site specific YARN configuration properties -->


<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

</configuration>' > $(find / -name yarn-site.xml | grep -v sample-conf)


chmod 644 $(find / -name mapred-site.xml)
# Above command may or may not be necessary
chown -R hduser:hadoop /usr/local/hadoop/

mkdir -p /app/hadoop/
chown -R hduser:hadoop /app/hadoop/

echo 'PATH="$PATH":/usr/local/hadoop/bin/' >> /etc/profile.d/hadoop.sh

echo "Hadoop should now be in /usr/local/hadoop/ directory. You may want to double check."
hv=$(/usr/local/hadoop/bin/hdfs version)
echo "*****Hadoop version below*****"
echo $hv
echo "*****Hadoop version above*****"
echo "Proceed with the manual steps. hdfs commands should be run as hduser."
echo "You are done installing Hadoop on this server."

if [ -z "$debflag" ]
then
echo "You are done installing Hadoop on this server."
else
rm /etc/profile.d/hadoop.sh # Not needed for Ubuntu/Debian
echo "Use 'su hduser' you will need to run this command:"
fi

echo ""
echo "********************"
echo "You will have to log out and log back in for the environment variables to work. Moreover this was configured for the hduser account."
echo "You may want to run 'su hduser' to run the 'hdfs version' command as a test."

5.  Run this command to do the installation:
sudo bash /tmp/install.sh  # You must run script above as a sudoer or the root user.
# You can ignore an error about /usr/local/hadoop/logs not being found if you are using Ubuntu/Debian Linux.

#If you are using the multi-node Hadoop deployment directions on, skip step 6.  Go to this posting if you want to set up a multi-node Hadoop cluster.

6.  For a single-node deployment, log in as hduser (e.g., su hduser).  Run these three commands:

hdfs namenode -format   
bash /usr/local/hadoop/sbin/start-dfs.sh
bash /usr/local/hadoop/sbin/start-yarn.sh
jps # To see the node services that are running

FYI
The above directions were tested on Ubuntu 20.x, SUSE 15.x and CentOS 8.x Linux servers (as well as other types including different versions of RHEL).

With Hadoop 3.0.0 the master and slaves files no longer need to be configured.  Instead a workers file needs to be configured.  DataNodes do not need to be able to SSH to the NameNode.  Similarly the DataNodes do not need to be able to SSH to each other.

Do you want to configure a multi-node Hadoop cluster?  See this link for directions.

How Do You Install jps?

Problem scenario
You want to list the instrumented JVMs on your Linux OS.  Therefore you want to run the command jps.  What package(s) do you need to install?

Solution
For CentOS/RedHat/Fedora run this:
sudo yum -y install java-1.8.0-openjdk-devel

For Linux SUSE run this:
sudo zypper -n install java-1_8_0-openjdk-devel

For Ubuntu/Debian Linux run this:
sudo apt-get -y install openjdk-8-jdk-headless default-jre


If you want to learn more about the Java process status tool, see these postings:

http://www.eclipse.org/openj9/docs/tool_jps/
https://docs.oracle.com/javase/7/docs/technotes/tools/share/jps.html
https://andunix.net/info/java/jps