如何在Ubuntu 18.04&16.04 LTS上设置Hadoop

时间:2019-05-19 01:26:27  来源:igfitidea点击:

ApacheHadoop3.1与之前的稳定3.0版本相比,它有明显的改进——任何错误修复。这个版本在HDFS和MapReduce上有很多改进。本教程将在Ubuntu 18.04、16.04 LTS和LinuxMint系统上安装和配置Hadoop 3.1.2 单节点集群。本文已经用Ubuntu 18.04lts进行了测试。

步骤1–准备工作

Java是在任何系统上运行Hadoop的主要需求,因此请确保在系统上安装了Java。

步骤2–为Haddop创建用户

我们建议为Hadoop工作创建一个普通(或root)帐户。使用以下命令创建帐户。

adduser hadoop

创建帐户后,还需要将基于密钥的ssh设置为自己的帐户。为此,请执行以下命令。

su - hadoop
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

现在,使用Hadoop user将SSH连接到本地主机。这不应该要求输入密码,但第一次将提示将RSA添加到已知主机列表中。

ssh localhost
exit

第3步-下载Hadoop源文件

在此步骤中,使用下面的命令下载Hadoop3.1源文件。我们也可以选择备用以提高下载速度。

cd ~
wget http://www-eu.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
tar xzf hadoop-3.1.2.tar.gz
mv hadoop-3.1.2 hadoop

步骤4–设置Hadoop伪分布式模式

4.1。设置Hadoop环境变量

设置Hadoop使用的环境变量。编辑[~/.bashrc]文件并在文件末尾添加以下值。

export HADOOP_HOME=/home/hadoop/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

然后,在当前运行环境中应用更改

 **source ~/.bashrc** 

现在编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh文件并设置 JAVA_HOME环境变量。根据系统上的安装更改JAVA路径。此路径可能因操作系统版本和安装源而异。因此,请确保使用正确的路径。

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

更新以下内容:

export JAVA_HOME=/usr/lib/jvm/java-11-oracle

4.2。安装Hadoop配置文件

Hadoop有许多配置文件,需要根据Hadoop基础设施的要求进行配置。让我们从基本Hadoop单节点集群设置的配置开始。首先,转到下面的位置

cd $HADOOP_HOME/etc/hadoop

编辑core-site.xml

<configuration>
<property>
  <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
</property>
</configuration>

编辑hdfs-site.xml

<configuration>
<property>
 <name>dfs.replication</name>
 <value>1</value>
</property>

<property>
  <name>dfs.name.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>

<property>
  <name>dfs.data.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>

编辑mapred-site.xml

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

编辑yarn-site.xml

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

4.3。格式化Namenode

现在使用以下命令格式化namenode,确保存储目录

hdfs namenode -format

输出示例

WARNING: /home/hadoop/hadoop/logs does not exist. Creating.
2018-05-02 17:52:09,678 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = theitroad/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 3.1.2
...
...
...
2018-05-02 17:52:13,717 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/hdfs/namenode has been successfully formatted.
2018-05-02 17:52:13,806 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
2018-05-02 17:52:14,161 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 391 bytes saved in 0 seconds .
2018-05-02 17:52:14,224 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2018-05-02 17:52:14,282 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at theitroad/127.0.1.1
************************************************************/

步骤5–启动Hadoop集群

让我们使用Hadoop提供的脚本启动Hadoop集群。只需导航到 $HADOOP_HOME/sbin 目录并逐个执行脚本。

cd $HADOOP_HOME/sbin/

现在执行 start-dfs.sh脚本。

./start-dfs.sh

再执行 start-yarn.sh脚本。

./start-yarn.sh

步骤6-在浏览器中访问Hadoop服务

Hadoop NameNode在默认端口9870上启动。

浏览器访问

http://svr1.theitroad.com:9870/

现在访问端口8042以获取有关集群和所有应用程序的信息

http://svr1.theitroad.com:8042/

访问端口9864以获取有关Hadoop节点的详细信息。

http://svr1.theitroad.com:9864/

步骤7-测试Hadoop单节点设置

7.1.使用以下命令生成所需的HDFS目录。

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/hadoop

7.2.使用以下命令将本地文件系统/var/log/httpd中的所有文件复制到hadoop分布式文件系统

bin/hdfs dfs -put /var/log/apache2 logs

7.3.在浏览器中打开下面的URL,即可浏览Hadoop分布式文件系统。我们将在列表中看到一个apache2文件夹。单击要打开的文件夹名,我们将在其中找到所有日志文件。

http://svr1.theitroad.com:9870/explorer.html#/user/hadoop/logs/

7.4-现在将hadoop分布式文件系统的日志目录复制到本地文件系统。

bin/hdfs dfs -get logs /tmp/logs
ls -l /tmp/logs/