Ubuntu 18.10 LTS 下Hadoop 3.1.2 伪分布式模式部署流程

hadoop pseudo distributed mode

系统环境

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.10
Release: 18.10
Codename: cosmic

先决条件

  • jdk-8。jdk-12试过后不可以,缺一些包。
  • ssh
  • pdsh

sudo apt install ssh
sudo apt install pdsh

jdk 可以去oracle官网下载安装,地址:https://www.oracle.com/technetwork/es/java/javasebusiness/downloads/index.html
Ubuntu有些ppa提供安装jdk。
Hadoop下载地址:
https://hadoop.apache.org/releases.html

下载完成后,将Hadoop解压到/srv和/opt目录中是一个不错的选择。但是/op通常为源码安装程序,非apt install程序。而/srv目录代表服务。Hadoop、HBase、Hive等作为服务在机器上运行,因此应该将Hadoop解压到/srv。

tar -xzf hadoop-3.1.2.tar.gz
sudo mv hadoop-3.1.2 /srv/
sudo chmod 777 -R /srv/ hadoop-3.1.2/
sudo ln -s /srv/ hadoop-3.1.2 /srv/hadoop

设置环境

vim ~/.bashrc

将如下内容添加到该文件的最下面:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME=/srv/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

添加完后在终端输入命令:

source ~/.bashrc

检查环境配置是否成功:

hadoop version

显示:

Hadoop 3.1.2
Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a
Compiled by sunilg on 2019-01-29T01:39Z
Compiled with protoc 2.5.0
From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9
This command was run using /srv/hadoop/share/hadoop/common/hadoop-common-3.1.2.jar

表示成功

Hadoop配置

设置伪分布模式的Hadoop的最重要的步骤就是配置Hadoop环境

进入Hadoop目录:

cd $HADOOP_HOME

编辑hadoop-env.sh文件:

vim etc/hadoop/hadoop-env.sh

找到并配置:

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

接下去依次配置以下文件。

etc/hadoop/core-site.xml:

  <configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/app/hadoop/data</value>
    </property>
   </configuration>

etc/hadoop/hdfs-site.xml:

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

etc/hadoop/mapred-site.xml:

   <configuration>
	    <property>
	        <name>mapreduce.framework.name</name>
	        <value>yarn</value>
	    </property>
	    <property>
	        <name>mapreduce.application.classpath</name>
	        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
	    </property>
   </configuration>

etc/hadoop/yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

设置SSH

接下来我们测试一下我们能否利用ssh不需要输入密码就能连接到localhost。

ssh localhost
如果需要输入密码,则需要进行以下配置:

ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

如果不设置免密连接localhost,在下面启动Hadoop时会出现权限问题,因此在这里需要设置免密连接localhost。

格式化Namenode

在etc/hadoop/core-site.xml配置文件中,我们设置了Namenode将他的文件保存在/var/app/hadoop/data目录中。因此我们需要初始化这个目录,然后才能格式化Namenode:

sudo mkdir -p /var/app/hadoop/data
sudo chmod -R 777 /var/app/hadoop/
hdfs namenode -format

在运行完以后,输入以下命令:

ls /var/app/hadoop/data/

如果看到有一个dfs目录,则表示Hadoop设置完成。

启动Hadoop

在完成了上述的所有配置后,现在就可以启动Hadoop守护程序了。

输入以下命令:

start-dfs.sh
start-yarn.sh

此处可能会出现如下错误:

localhost: rcmd: socket: Permission denied

如果出现此错误,请输入一下命令:

sudo touch /etc/pdsh/rcmd_default
sudo vim /etc/pdsh/rcmd_default

在打开的文件中输入ssh,然后保存。然后重新启动Hadoop。

启动完成后可以使用jps命令查看正在运行的进程。

jps

如果看到以下类似的结果,则表明启动成功。

13970 NodeManager
13206 DataNode
14315 Jps
13739 ResourceManager
13004 NameNode
13486 SecondaryNameNode

除了jps以外,其他的都是Hadoop的进程,如果有进程没有运行,则说明在操作中出现了错误。你可以在Hadoop目录下的log目录中找到相关日志,检查并解决错误。

如果需要关闭,请输入命令:

stop-dfs.sh
stop-yarn.sh

http://localhost:9870/dfshealth.html#tab-overview

Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

解决方案是在文件hadoop-env.sh中增加:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
发布了203 篇原创文章 · 获赞 68 · 访问量 72万+

猜你喜欢

转载自blog.csdn.net/philosophyatmath/article/details/88874543