阅读推荐(105条消息) 大数据安装之hadoop-3.3.4_x_y_z423的博客-CSDN博客
(112条消息) hadoop3.3.4集群安装部署_hwbays的博客-CSDN博客
加倍推荐,Hadoop集群配置内容讲的及其详细基于docker的hadoop集群搭建
xshell
Windows 10 Pro, 64-bit
VMware® Workstation 16 Pro
Ubuntu22.04 * 3
apt install open-vw-tools
apt install open-vw-tools-desktop # 据我了解官网推荐带桌面的安装
个人没有安装好,复制粘贴失效,无法拖拽
推荐创建共享文件夹https://www.cnblogs.com/chengqiang521/p/16620768.html
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虚拟机中
①这里我是使用源Ubuntu虚拟主机创建了三个链接克隆,该克隆依据快照原理离不开源主机,但是依旧可以独立运行,对应快照一定不能误删
②三个Ubuntu分别改主机名为Hadoop1,2,3;有以下两种方法
hostnamectl set-hostname Hadoop1;
或直接在配置文件中改 vim /ect/hostname
VMware 虚拟网络编辑器设置net模式,可以自动定义子网ip和掩码(所有虚拟机关闭后设置)
其中NAT设置里可以看到网关
使用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
vim /etc/hosts
全部改成如下格式
关闭防火墙是为了让集群内部之间更方便的通信,省事不安全
systemctl stop firewalld.service *#停止firewall*
systemctl disable firewalld.service *#禁止firewall开机启动*
我就没有安装防火墙
ping Hadoop2
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命令也可以用来发送密钥,不过后面还要自己安装比较麻烦)
⑥然后就可以免密登录了,记得都相互设置一下使得所有的都可以相互免密登录。
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
有输出表示成功
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
cd /home/haiyang/software/Hadoop
mkdir tmp
mkdir {var,dfs}
mkdir -p dfs/name
mkdir -p dfs/data
配置内容来自(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/
vim hadoop-env.sh
export JAVA_HOME=/home/haiyang/software/java/jdk-18.0.2
vim core-site.xml
<property>
<name>hadoop.tmp.dirname>
<value>/home/haiyang/software/Hadoop/tmpvalue>
property>
<property>
<name>fs.default.namename>
<value>hdfs://Hadoop1:9000value>
property>
<property>
<name>hadoop.http.staticuser.username>
<value>haiyangvalue>
property>
vim hdfs-site.xml
<property>
<name>dfs.name.dirname>
<value>/home/haiyang/software/Hadoop/dfs/namevalue>
<description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.description>
property>
<property>
<name>dfs.data.dirname>
<value>/home/haiyang/software/Hadoop/dfs/datavalue>
<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.dirname>
<value>/home/haiyang/software/Hadoop/dfs/secondaryvalue>
property>
<property>
<name>dfs.replicationname>
<value>2value>
property>
<property>
<name>dfs.namenode.http-addressname>
<value>Hadoop1:50070value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>Hadoop3:50090value>
property>
<property>
<name>dfs.namenode.servicerpc-addressname>
<value>Hadoop1:8022value>
property>
<property>
<name>dfs.https.addressname>
<value>Hadoop1:50470value>
property>
<property>
<name>dfs.https.portname>
<value>50470value>
property>
vim workers
Hadoop1
Hadoop2
Hadoop3
export JAVA_HOME=/home/haiyang/software/java/jdk-18.0.2
<property>
<name>mapred.job.trackername>
<value>Hadoop1:49001value>
property>
<property>
<name>mapred.local.dirname>
<value>/home/hadoop/varvalue>
property>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
export JAVA_HOME=/home/haiyang/software/java/jdk-18.0.2
<property>
<name>yarn.resourcemanager.hostnamename>
<value>Hadoop1value>
property>
<property>
<description>The address of the applications manager interface in the RM.description>
<name>yarn.resourcemanager.addressname>
<value>${yarn.resourcemanager.hostname}:8032value>
property>
<property>
<description>The address of the scheduler interface.description>
<name>yarn.resourcemanager.scheduler.addressname>
<value>${yarn.resourcemanager.hostname}:8030value>
property>
<property>
<description>The http address of the RM web application.description>
<name>yarn.resourcemanager.webapp.addressname>
<value>${yarn.resourcemanager.hostname}:8088value>
property>
<property>
<description>The https adddress of the RM web application.description>
<name>yarn.resourcemanager.webapp.https.addressname>
<value>${yarn.resourcemanager.hostname}:8090value>
property>
<property>
<name>yarn.resourcemanager.resource-tracker.addressname>
<value>${yarn.resourcemanager.hostname}:8031value>
property>
<property>
<description>The address of the RM admin interface.description>
<name>yarn.resourcemanager.admin.addressname>
<value>${yarn.resourcemanager.hostname}:8033value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.scheduler.maximum-allocation-mbname>
<value>1024value>
<discription>每个节点可用内存,单位MB,默认8182MBdiscription>
property>
<property>
<name>yarn.nodemanager.vmem-pmem-rationame>
<value>2.1value>
property>
<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>1024value>
property>
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>
切换目录
cd /home/haiyang/software/Hadoop/hadoop-3.3.4/sbin
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
RN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
YARN_RESOURCEMANAGER_USER=root
这里我们使用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
(我的这个时候运行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