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和掩码(所有虚拟机关闭后设置)
其中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
全部改成如下格式
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会不会自动在服务方创建,但第一个要机器要自己创建)
sudosucd ~
mkdir .ssh
chmod700 .ssh
cd .ssh
mkdir authorized_keys
chmod600 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 #打开文件
#在文件最后添加如下内容exportJAVA_HOME=你jdk解压路径
exportPATH=$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
在最后添加如下的内容
exportHADOOP_HOME=/home/haiyang/software/Hadoop/hadoop-2.10.1 # 具体位置看个人安装exportPATH=$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
六、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
exportJAVA_HOME=/home/haiyang/software/java/jdk-18.0.2
②修改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路径
exportJAVA_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,在文件末尾添加
exportJAVA_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
版权归原作者 落非 所有, 如有侵权,请联系我们删除。