Ubuntu配置hadoop(基于Docker)

前言

需要搭建Docker虚拟机上的hadoop集群
踩过的坑都在这里了
基本上参照这篇博客 这里
自己搭建的时候遇到很多问题,踩过的坑都在这里了

一、启动Docker容器

首先pull一个Ubuntu镜像

docker pull ubuntu

注意这边直接pull ubuntu的话会直接下载最新版本,可以通过ubuntu:18.04来下载指定版本

接着通过镜像运行一个容器

docker run -dit --name=main -p 9870:9870 -p 8088:8088 ubuntu

注意这里要使用-p指令开放9870和8088两个端口,之后会用到

使用docker exec命令进入容器

docker exec -it main /bin/bash

image-20230907221648062

二、安装jdk

Ubuntu中用压缩包安装jdk较为麻烦,需要配置系统环境变量配置文件,一步出错可能无法使用。所以本文在Ubuntu中使用命令安装jdk。其他方法安装jdk也可。

打开终端

执行以下命令:

sudo apt-get install openjdk-8-jdk
image-20230907201605154

如果报错bash: sudo: command not found的话,先执行下面两个命令

apt-get update # 更新apt-get
apt-get install sudo # 安装sudo

安装完成后查看Java是否安装成功

java -version

如下图所示则安装成功:

image-20230907201808967

如果需要卸载jdk则使用以下命令:

sudo apt remove openjdk*

三、配置环境文件

打开环境文件

sudo vim ~/.bashrc

如果没有vim编辑器则需要下载:

sudo apt-get install vim

或使用gedit编辑器也行

加入语句

文件顶部加入以下语句并保存:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 #目录要换成自己jdk所在目录
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH 
image-20230907224228576

使环境生效

source ~/.bashrc

使用 echo $JAVA_HOME 显示JAVA_HOME即为成功

image-20230907224430938

四、安装ssh免密码登录

sudo apt-get install ssh openssh-server

安装完毕后先cd到~

cd ~

再创建.ssh文件夹

mkdir .ssh

再cd到.ssh中

cd .ssh

生成密钥

ssh-keygen -t rsa 

按三次回车

image-20230907230349029

将秘钥加入到授权中

cat id_rsa.pub >> authorized_keys

再验证ssh localhost 如下图,不用密码登录即为成功
在这里插入图片描述

如果发生以下报错,那就看这个博客的解决方案 这里
在这里插入图片描述

五、安装Hadoop

1)安装hadoop并解压

先cd到/usr/local

cd /usr/local

镜像下载链接https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.1/

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz

然后解压后进入文件夹

tar -zxvf hadoop-3.3.1.tar.gz
cd hadoop-3.3.1

2)配置相关文件

core-site.xml

打开/etc/hadoop中的core-site.xml 文件,加入如下语句并保存

注意在在configuration标签中加入

<property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/local/hadoop-3.3.1/tmp</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://localhost:9000</value>
</property>
image-20230907232907417

hdfs-site.xml

和上面一样,打开/etc中的hdfs-site.xml 文件,加入如下语句并保存

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

hadoop-env.sh

查看你的 jdk安装目录

echo $JAVA_HOME

打开 hadoop-env.sh 文件配置如下并保存:

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"  # 根据自己的路径写

六、运行Hadoop

1)首先初始化HDFS系统

在hadop3.3.0目录下使用如下命令进行初始化:

bin/hdfs namenode -format

成功后如下图:
image-20230908100159505

2)开启NameNode和DataNode守护进程

继续运行如下命令开启Hadoop:

sbin/start-dfs.sh

在这里插入图片描述

如果出现以下报错,请查看这个博客 这里

image-20230908100616153

3)查看jps进程信息

jps

如下图即为成功:
在这里插入图片描述

关闭hadoop使用命令 sbin/stop-dfs.sh

打开浏览器输入http://localhost:9870,成功打开

image-20230908101314185

4)创建Hadoop用户组

使用/bin/bash作为shell:

sudo useradd -m hadoop -s /bin/bash 

设置密码:

sudo passwd hadoop

添加hadoop至管理员权限:

sudo adduser hadoop sudo
image-20230908102449452

七、配置yarn

搭建前请保证已经搭建好了HDFS的环境,即配置好所上内容。

1)终端输入hostname查看主机名

hostname

2)打开/etc/hadoop下yarn-site.xml,在configuration标签中加入如下内容,注意主机名要修改为自己的

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!--Resource Manager-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>你的主机名</value><!--你的hostname的主机名-->
</property>

3)打开mapred-site.xml 文件,配置如下(在configuration标签中间加入)

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

4)在主文件夹输入命令启动yarn

sbin/start-yarn.sh

jps查看进程多了两个东西

image-20230908103109094

在浏览器输入http://localhost:8088

image-20230908103241262

至此,hadoop全部配置完成

创建镜像

为了后期使用方便,我们可以将容器保存为镜像

docker commit main hadoop_base

这样我们想要启动一个新的容器时只需要在镜像上启动就行了

docker run -dit -p 9870:9870 -p 8088:8088 main hadoop_base

参考链接:

https://blog.youkuaiyun.com/weixin_58707437/article/details/127931069

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值