【Hadoop和Spark伪分布式安装与使用】

Hadoop和Spark伪分布式安装与使用(第二期)

上期已将Hadoop安装好了,接下来我们继续Hadoop的配置

12、Hadoop单机配置

Hadoop 默认模式为非分布式模式,非分布式即单 Java 进程,方便进行调试。运行一个grep 例子,将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/* 

执行成功后如下所示,输出了作业的相关信息,输出的结果是符合正则的单词 dfsadmin 出现了1次

在这里插入图片描述

注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

rm -r ./output

13、Hadoop伪分布式配置

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于/usr/local/hadoop/etc/hadoop/中,伪分布式需要修改2个配置文件core-site.xml 和 hdfs-site.xml。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 core-site.xml (通过 gedit 编辑会比较方便,在这里安装一下gedit:sudo apt-get install gedit(执行此命令))

gedit ./etc/hadoop/core-site.xml

core-site.xml文件中添加如下配置(不要把里面的内容删掉,只在下图位置处加入配置就好)

在这里插入图片描述

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>        #解决web端无法删除上传文件
        <value>hadoop</value>
    </property>
</configuration>

修改配置文件hdfs-site.xml

gedit ./etc/hadoop/hdfs-site.xml

hdfs-site.xml文件中添加如下配置

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

Hadoop配置文件说明:

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为/tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

配置完成后,执行 NameNode 的格式化:

cd /usr/local/hadoop
./bin/hdfs namenode -format

查看格式化后的信息,结果如下图

在这里插入图片描述

接着开启 NameNode 和 DataNode 守护进程

cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

然后我这里出了两个警告:

在这里插入图片描述

解决办法如下(修改两个配置文件):

sudo vim /etc/profile

在文件中添加下面内容(注意JDK版本):

export JAVA_HOME=/usr/lib/jvm/jdk-21.0.2
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
sudo vim ~/.bashrc

在文件最前面添加如下内容:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

然后保存退出,执行下面命令:

source /etc/profile
source ~/.bashrc

注意:在这个时候重启虚拟机,然后重新开启 NameNode 和 DataNode,命令行和上面一样,但结果还是留下了一条警告:

在这里插入图片描述

先翻译:警告util.NativeCodeLoader:无法为您的平台加载本机Hadoop库…在适用的情况下使用内置的java类,这个警告实在是虽然可能没有什么阻挡使用Hadoop的,但是它会在你启动Hadoop时候出现,还会在你输入每一个命令enter之后出现

我在百度和博客上遨游了一圈,我的建议是这种警告无所谓,网上的很多处理方法都是把这类警告消除了,虽然让我们这些强迫症看上去舒服了,但是有很多细节问题,特别是对于写程序,警告和错误都是很有利的信息,这有利于我们完善自己的程序或者系统,所以大家如果实在看不下去了,那你就把警告消除好了,可自行百度。

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程:

在这里插入图片描述

在这里,你可以访问web界面http://localhost:9870/dfshealth.html#tab-overview有,查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件(注意,这个网址输在ubuntu里面的浏览器上,因为你访问的本地指的是虚拟机,所以不能用Windows上的浏览器进入)。
在这里插入图片描述

附录

附录一:彻底卸载Java环境

开始卸载,首先检查版本号

java -version  #该命令将显示已安装的Java版本和其他相关信息。

在这里插入图片描述

我这里的版本是11,如果你的版本是16或者其他的,那就要把11该成你电脑上安装的相应版本号。

如果你安装了多个版本的jdk,可以用下面的命令查看,然后卸载对应版本号的jdk

dpkg -l | grep -i jdk

接下来输入以下四行命令来卸载(按提示输入Y):

sudo apt-get --purge remove openjdk-11-jdk
sudo apt-get --purge remove openjdk-11-jdk-headless
sudo apt-get --purge remove openjdk-11-jre
sudo apt-get --purge remove openjdk-11-jre-headless

执行以下命令删除Java安装目录:

sudo rm -rf /usr/lib/jvm/*

在卸载Java后,可能仍然存在一些残留文件和配置。为了彻底清理Java相关的文件和配置,可以执行以下步骤:

1、清理环境变量:编辑~/.bashrc文件,使用文本编辑器打开该文件:

sudo vim ~/.bashrc

检查是否存在与Java相关的JAVA_HOME和PATH环境变量,并删除或注释掉这些行。保存文件并关闭文本编辑器。

2、清理系统环境变量:编辑/etc/environment文件:

sudo vim /etc/environment

同样,检查是否存在与Java相关的JAVA_HOME和PATH环境变量,并删除或注释掉这些行。保存文件并关闭文本编辑器。

3、清理其他残留文件:执行以下命令清理其他可能存在的Java残留文件:

sudo rm -rf ~/.java
sudo rm -rf ~/.m2/repository

上述命令将删除用户主目录中与Java相关的隐藏文件和Maven存储库。

最后验证卸载是否完成,有以下两步:

1、执行以下命令来检查Java是否已从系统中移除:

java -version

如果Java已成功卸载,该命令将显示"Command ‘java’ not found"或类似的消息。

2、检查系统中是否还存在Java相关的文件和目录:

ls -la /usr/lib/jvm

如果该目录为空或不存在,说明Java已完全卸载。

附录二:重装Java环境

下载地址:https://www.oracle.com/java/technologies/downloads/

在这里插入图片描述

下载好后转到第一期,继续9、10两步,再看一下11的Hadoop的文件拖拽方式,然后回到这一步,执行以下命令(注意大小写和空格):

cd /usr/lib
sudo mkdir jvm  #创建/usr/lib/jvm目录用来存放JDK文件
cd
sudo tar -zxvf ~/Downloads/jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm

继续执行如下命令,设置环境变量:

sudo vim ~/.bashrc

在这个文件的开头位置,添加如下几行内容(请把jdk-21.0.2改为你自己安装的版本号):

export JAVA_HOME=/usr/lib/jvm/jdk-21.0.2
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

继续执行如下命令让.bashrc文件的配置立即生效:

source ~/.bashrc

用下面命令来检验是否安装成功,有版本号则证明安装成功

java -version

在这里插入图片描述

附录三:多次格式化namenode的解决办法

删除 hadoop 三台节点配置路径下的残留文件:

rm -rf /usr/local/hadoop/tmp          # 删除hdfs缓存文件

在这里插入图片描述

rm -rf /usr/local/hadoop/tmp/dfs/name     # 删除NN缓存目录

在这里插入图片描述

rm -rf /usr/local/hadoop/tmp/dfs/data                # 删除DN缓存目录

在这里插入图片描述

然后手动创建配置文件

mkdir -p /usr/local/hadoop/tmp
mkdir -p /usr/local/hadoop/tmp/dfs/name
mkdir -p /usr/local/hadoop/tmp/dfs/data

然后重新格式化

到此,我们只是完成了一小部分,继续加油吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值