Ubuntu22.04 Hadoop3.3.4 jdk18.02 安装配置

Hadoop安装

阅读推荐(105条消息) 大数据安装之hadoop-3.3.4_x_y_z423的博客-CSDN博客

(112条消息) hadoop3.3.4集群安装部署_hwbays的博客-CSDN博客

加倍推荐,Hadoop集群配置内容讲的及其详细基于docker的hadoop集群搭建

一、准备工作

1、环境工具

xshell
Windows 10 Pro, 64-bit
VMware® Workstation 16 Pro
Ubuntu22.04 * 3

2、VMware tools安装

apt install open-vw-tools

apt install open-vw-tools-desktop # 据我了解官网推荐带桌面的安装

个人没有安装好,复制粘贴失效,无法拖拽

推荐创建共享文件夹https://www.cnblogs.com/chengqiang521/p/16620768.html

3、下载文件

Hadoop(在官网下载的时候注意不要下载成源代码)

https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

jdk [jdk-18.0.2_linux-x64_bin.tar.gz-正式版下载-官方版下载-123云盘 (123pan.com)](

传输文件到Ubuntu虚拟机中

4、创建链接克隆,修改主机名

①这里我是使用源Ubuntu虚拟主机创建了三个链接克隆,该克隆依据快照原理离不开源主机,但是依旧可以独立运行,对应快照一定不能误删
在这里插入图片描述

②三个Ubuntu分别改主机名为Hadoop1,2,3;有以下两种方法

hostnamectl set-hostname Hadoop1;

或直接在配置文件中改 vim /ect/hostname

在这里插入图片描述

5、网络设置

VMware 虚拟网络编辑器设置net模式,可以自动定义子网ip和掩码(所有虚拟机关闭后设置)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1fwcjWs-1664963843097)(C:\Users\23141\Desktop\Hadoop安装.assets\image-20221005173633546.png)]

其中NAT设置里可以看到网关

设置静态IP

使用netplan设置IP地址

①、配置netplan可读入的网络配置文件

# vim /etc/netplan/00-installer-config.yaml # 这个名字好像可以随便,因为netplan读取文件时读*.yaml

network:
  ethernets:
    ens160:     #配置的网卡的名称
      addresses: [192.168.161.131/24]    #配置的静态ip地址和掩码
      dhcp4: no    #关闭DHCP,如果需要打开DHCP则写yes
      optional: true
      
      #gateway4 已被弃用,请改用默认路由。默认路由就是通过 routes 配置 IP,如下
      routes: 
        - to: default
          via: 192.168.161.2 #默认网关,注意查看自己的网关到底是多少,VMware中一般为 *.*.*.2
      nameservers:
         addresses: [114.114.114.114,180.76.76.76]    #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
  version: 2
  renderer: networkd    #指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd

②、netplan应用配置

# netplan apply

6、修改host文件(Hadoop1、Hadoop2、Hadoop3)

vim /etc/hosts

全部改成如下格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmZy7qxm-1664963843098)(C:\Users\23141\AppData\Roaming\Typora\typora-user-images\image-20221003175107825.png)]

7、关闭防火墙(Hadoop1、Hadoop2、Hadoop3)

关闭防火墙是为了让集群内部之间更方便的通信,省事不安全

systemctl stop firewalld.service *#停止firewall*

systemctl disable firewalld.service *#禁止firewall开机启动*

我就没有安装防火墙

8、测试各机器之间的联通性

ping Hadoop2

二、设置ssh免密登录(Hadoop1、Hadoop2、Hadoop3)

ssh免密登录与ssh的密钥登录是有区别的
这里我犯了一个逻辑上的错误。
在ssh密钥登录的过程中服务器持有的是公钥
而(客户)客户端持有的是私钥。
我们在生成公私密钥对后,将公钥安装给服务器,将私钥发送给客户。
注意:密钥对不一定非要在服务端生成,我就是这里晕了一下。

这里的免密登录就是密钥登录

下面的操作中密钥对产生自客户(客户端,保留私钥的一方),所以要使用ssh-copy-id将公钥安装在服务端。

ssh-copy-id可以将公钥远程的写入目标机器目标用户下/.ssh/authorized_keys文件中)

具体操作:

①此处需要使用ssh-server如没有则下载

apt install openssh-server

②配置所有节点(Hadoop1、Hdoop2、Hadoop3)的/etc/ssh/sshd_config文件。找到PermitRootLogin 去掉注释,后面改为yes

vim /etc/ssh/sshd_config

分别找到一下条目去掉注释,更改

PermitRootLogin yes #允许root用户登录
RSAAuthentication yes #RSA身份认证
PubkeyAuthentication yes #公共身份认证
PasswordAuthentication yes #密码身份认证

更改之后记得重启一下ssh服务

sudo systemctl restart sshd

这里ssh密钥登录本身不需要密码身份认证,但是使用ssh-copy-id命令时需要。
所以如果你的root账户还没有密码记得先设置密码
sudo su
passwd root

③在root下创建ssh密钥登录需要的目录(三个都创建)

(我不知道ssh-copy-id会不会自动在服务方创建,但第一个要机器要自己创建)

sudo su
cd ~
mkdir .ssh
chmod 700 .ssh 
cd .ssh
mkdir authorized_keys
chmod 600 authorized_keys # 设置响应权限确保正常运行

④在.ssh文件下生成密钥对,直接回三个车就好,注意不能设置密码,不然怎么免密登录。

cd ~/.ssh
ssh-keygen -t rsa #生成免密登录公私钥,根据提示按回车或y

⑤将公钥安装在服务端中

ssh-copy-id -i ~/.ssh/id_rsa.pub root@Hadoop1 #自己给自己按,我自己ssh我自己
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Hadoop2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Hadoop3

注意这里需要输入一次服务端root(你所对应的账户)密码。

(scp命令也可以用来发送密钥,不过后面还要自己安装比较麻烦)

⑥然后就可以免密登录了,记得都相互设置一下使得所有的都可以相互免密登录。

三、安装jdk(Hadoop1)

1、查看系统中是否已经安装了java

java -version

2、在目录下创建software下层创建java

3、将jdk解压到java目录下

tar -zxvf 压缩包位置 -C /home/您的名字/software/java

4、添加系统变量(对所有用户生效)

#vim /etc/profile #打开文件

#在文件最后添加如下内容
export JAVA_HOME=你jdk解压路径
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile #让环境变量生效

5、检查是否安装完成

java -version
java
javac

有输出表示成功

四、安装Hadoop (Hadoop1)

1、创建目录

cd /home/haiyang/software

mkdir Hadoop

2、将压缩包解压到目录下

tar -zxvf 压缩包 -C 当前创建的目录

3、添加环境变量

查看解压文件

cd /home/haiyang/software/Hadoop/

ls

打开环境变量配置文件

vim /etc/profile

在最后添加如下的内容

export HADOOP_HOME=/home/haiyang/software/Hadoop/hadoop-2.10.1 # 具体位置看个人安装
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 这里是前面的jdk和这里的hadoop一起的

4、使环境变量生效

source /etc/profile

5、测试是否安装成功

hadoop version

五、为Hadoop集群的配置新建目录

cd /home/haiyang/software/Hadoop
mkdir tmp
mkdir {var,dfs}
mkdir -p dfs/name
mkdir -p dfs/data

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovrZAQka-1664963843100)(C:\Users\23141\Desktop\Hadoop安装.assets\image-20221004160957616.png)]

六、Hadoop集群配置(Hadoop1)

配置内容来自(112条消息) hadoop3.3.4集群安装部署_hwbays的博客-CSDN博客
配置中注释内容来自https://blog.csdn.net/ddxshf/article/details/60326681

切换目录

cd /home/haiyang/software/Hadoop/hadoop-3.3.4/etc/hadoop/

①修改hadoop-env.sh文件

vim hadoop-env.sh

export JAVA_HOME=/home/haiyang/software/java/jdk-18.0.2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ao1f9Ik-1664963843101)(C:\Users\23141\Desktop\Hadoop安装.assets\image-20221005171928187.png)]

②修改core-site.xml,在文件的configrue标签内加入以下内容

vim core-site.xml

 <!--hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。-->
 <property>
     <name>hadoop.tmp.dir</name>
 <value>/home/haiyang/software/Hadoop/tmp</value>
 </property>

<!--fs.default.name 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。HDFS和MapReduce组件都需要它,这就是它出现在core-site.xml文件中而不是hdfs-site.xml文件中的原因。-->
 <property>
     <name>fs.default.name</name>
     <value>hdfs://Hadoop1:9000</value>
 </property>
 
 <!-- -->
 <property>
     <name>hadoop.http.staticuser.user</name>
     <value>haiyang</value>
 </property>

③修改hdfs-site.xml文件,在文件的configrue标签内加入以下内容

vim hdfs-site.xml

<!--dfs.namenode.name.dir 元数据存储目录 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。 -->
 <property>
<name>dfs.name.dir</name>
   <value>/home/haiyang/software/Hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>

<!--dfs.datanode.data.dir 块存储目录 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这 个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆盖。 -->
<property>
   <name>dfs.data.dir</name>
   <value>/home/haiyang/software/Hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>

<property>
   <name>dfs.namenode.checkpoint.dir</name>
   <value>/home/haiyang/software/Hadoop/dfs/secondary</value>
</property>

<!--dfs.replication 块数  它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)。在单机和单机伪分布模式下,将此值修改为1。-->
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>

<!-- 下面指定Hadoop辅助名称节点主机配置 -->

<!-- 配置namenode启动主机ip地址和端口-->
<property>
   <name>dfs.namenode.http-address</name>
   <value>Hadoop1:50070</value>
</property>

<!--secondarynamenode启动主机ip地址和端口,对这个修改可以决定secondarynamenode的位置-->
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>Hadoop3:50090</value>
</property>

<!--namenode.servicerpc启动主机ip地址和端口-->
  <property>
    <name>dfs.namenode.servicerpc-address</name>
    <value>Hadoop1:8022</value>
  </property>
  
  <!--dfs.https启动主机ip地址和端口-->
  <property>
    <name>dfs.https.address</name>
    <value>Hadoop1:50470</value>
  </property>
   <!--dfs.https.port启动端口-->
  <property>
    <name>dfs.https.port</name>
    <value>50470</value>
  </property>




④修改workers文件,删除localhost,加入节点信息,每个节点占一行

vim workers

Hadoop1
Hadoop2
Hadoop3

⑤修改mapred-env.sh文件,在文件末尾添加JDK路径

export JAVA_HOME=/home/haiyang/software/java/jdk-18.0.2

⑥修改mapred-site.xml文件,在文件的configrue标签内加入以下内容

<!--mapred.job.tracker JobTracker的主机(或者IP)和端口。-->
<property>
    <name>mapred.job.tracker</name>
    <value>Hadoop1:49001</value>
</property>
 
 <!--mapreduce.jobtracker.system.dir MapReduce在HDFS上存储文件的位置。-->
 
 <!--mapreduce.cluster.local.dir MapReduce的缓存数据存储在文件系统中的位置。-->
<property>
      <name>mapred.local.dir</name>
       <value>/home/hadoop/var</value>
</property>
 
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

⑦修改yarn-env.sh,在文件末尾添加

export JAVA_HOME=/home/haiyang/software/java/jdk-18.0.2

⑧修改yarn-site.xml,在文件的configrue标签内加入以下内容

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>Hadoop1</value>
   </property>
 
   <property>
        <description>The address of the applications manager interface in the RM.</description>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
   </property>
 
   <property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
   </property>
 
   <property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
   </property>
 
   <property>
        <description>The https adddress of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:8090</value>
   </property>
 
   <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
   </property>
 
   <property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
   </property>
 
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>
 
   <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>1024</value>
        <discription>每个节点可用内存,单位MB,默认8182MB</discription>
   </property>
 
   <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
   </property>
 
   <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>1024</value>
   </property>
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
   </property>

切换目录

cd /home/haiyang/software/Hadoop/hadoop-3.3.4/sbin

⑨修改start-dfs.sh,stop-dfs.sh文件,在文件头部添加以下配置

HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root

⑩修改start-yarn.sh,stop-yarn.sh文件,在文件头部添加以下配置

RN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
YARN_RESOURCEMANAGER_USER=root

七、 分发配置(Hadoop1)

这里我们使用rsync进行配置分发,节约配置成本(这样配置分发的前提是节点之间已经做好了免密登录)

在Hadoop1上

cd /home/haiyang/software/

rsync -rvl Hadoop root@Hadoop2:/home/haiyang/software/ #对Hadoop2分发 Hadoop文件

rsync -rvl Hadoop root@Hadoop3:/home/haiyang/software/

rsync -rvl java root@Hadoop2:/home/haiyang/software/ #对Hadoop2分发 java文件

rsync -rvl java root@Hadoop3:/home/haiyang/software/ #对Hadoop3分发 java文件

rsync /etc/profile root@Hadoop3:/etc/profile #分发hadoop、jdk环境变量配置文件

使(Hadoop1、Hadoop2、Hadoop3)中环境变量生效

都执行 source /etc/profile

八、启动服务测试

①hadoop初始化(只需在主服务器执行即可(NameNode节点))

cd /home/haiyang/software/Hadoop/hadoop-3.3.4/bin
./hadoop namenode -format
初始化成功,结果如下
在这里插入图片描述

②启动hadoop

cd  /home/haiyang/software/Hadoop/hadoop-3.3.4/sbin/
./start-all.sh

在这里插入图片描述

./stop-all.sh

九、熟悉 hdfs命令

(我的这个时候运行hadoop提示没有这个命令,没理解为啥没有,然后执行了一次 source /etc/profile 恢复正常)
(1)ls 显示目录下的所有文件或者文件夹

使用方法: hadoop fs -ls [uri形式目录]
示例: hadoop fs –ls / 显示根目录下的所有文件和目录
显示目录下的所有文件可以加 -R 选项
示例: hadoop fs -ls -R /
(2) cat 查看文件内容

使用方法:hadoop fs -cat URI [URI …]
示例: hadoop fs -cat /in/test2.txt

(3) mkdir 创建目录

使用方法:hadoop fs -mkdir [uri形式目录]
示例: hadoop fs –mkdir /test
创建多级目录 加上 –p
示例: hadoop fs –mkdir -p /a/b/c

(4) rm 删除目录或者文件

使用方法:hadoop fs -rm [文件路径] 删除文件夹加上 -r
示例: hadoop fs -rm /test1.txt
删除文件夹加上 -r,
示例:hadoop fs -rm -r /test

(2)put 复制文件
将文件复制到hdfs系统中,也可以是从标准输入中读取文件,此时的dst是一个文件
使用方法: hadoop fs -put …
示例:Hadoop fs -put /usr/wisedu/temp/test1.txt /
从标准输入中读取文件:hadoop fs -put -/in/myword

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值