Windows 10 专业版上安装虚拟机 VMware10.0.2、Xshell8.0、Hadoop3.3.6 与 jdk1.8.0【命令式】
笔记 、笔记 、笔记 、笔记
1. 写在前面
好片: Hadoop 保姆级超详细安装教程_哔哩哔哩_bilibili ------文章的从虚拟机到 Hadoop 安装【主】
好文: Hadoop3.3.6 完全分布式集群【三个节点】的安装配置-CSDN 博客 ------文章的 Hadoop 安装的 Hadoop 文件配置等
Windows 10 端提前安装好必要的软件:VMware10.0.2 、Xshell8.0
Windows 10 端提前下载好必要的软件包:hadoop-3.3.6.tar.gz 、jdk-8u431-linux-x64.tar.gz
一个 master 与两个 si(s1、s2):主要操作在 master,无特殊说明均在 master
不知道文件夹内有哪些文件与文件夹可以使用 ls
/ls -all
查看
2.VMware10.0.2(参考好片)
Ctrl+Alt
:显示鼠标
Ctrl+A+R
:重启虚拟机
用户名:root
密码:1111
------输密码时不显示,只管输就行
2.1 配置静态网络:
检查网络连接是否正常:ping www.baidu.com
------> Ctrl+c
停止 ping
命令
测试网络是否可用
打开网络连接:service network restart
...... -> ping ......
2.2 定位到网络文件配置的文件位置并将 ip 地址改为静态:
cd 目录:cd /etc
注:有
/
是绝对路径,没有是相对路径
[cd ..
------返回上一级目录
cd
后跟一个空格和波浪号 (~)[非必要],表示切换到当前用户的 home 目录]
su
命令?【需要学习】
cd sysconfig
cd network-[tab键------后面的文件夹唯一确定(scripts)------两下tab键显示目录]
展示当前文件夹内的文件:ls
------list show
注:看详细文件信息文件夹+文件:ll
编辑器打开文件:vi 文件名
vi ifcfg-ens33
-> 查 vi 操作的使用方法
按 i
键编辑文件
改:bootproto:static , onboot:yes
增:
ip 地址:IPADDR = "192.168.子网 IP.自由填" 192.168.17.10/20/30
子网掩码:netmask = "255.255.255.0"
指定网关:GATEWAY = "192.168.子网 IP.2"
连接外网需要配置-域名解析服务器: DNS1 = 180.76.76.76 、 DNS2 = 223.5.5.5
按 Esc
退出编辑、保存: :wq
------保存并退出(: q 直接退出, : q! 强制退出)
ping www.baidu.com
2.3 关闭防火墙
1:查看防火状态
systemctl status firewalld
2:暂时关闭防火墙
systemctl stop firewalld
3:永久关闭防火墙
systemctl disable firewalld
4:重启防火墙
systemctl enable firewalld
5:再查看防火状态
systemctl status firewalld
2.4 配置主机名:
修改主机名:hostnamectl set-hostname 机械名自拟
-> 重启:reboot
/exit
(快一些)
2.5 编辑hosts文件:master、s1、s2
vi /etc/hosts
:i
进入编辑模式
增:【ip地址 机械名】
192.168.17.10 master
192.168.17.20 s1
192.168.17.30 s2
------便于 ping 操作等
Esc
-> :wq
保存并退出
3. Xshell
ssh -> Secure Shell:(一类工具)向两个机子上搭建桥梁进行文件传输
Xshell: 新建 -> 输入名称和ip地址 -> 用户名root与密码1111
3.1 传文件:
rz
(receive Zmodem)/sz
(send Zmodem) -> 安装:yum install lrzsz -y
--出现安装错误是因为使用的 CentOS 7 仓库已经被归档,当前的镜像地址无法找到所需的文件。
解决方法参见该文:CentOS 7 yum无法使用...... - 愚生浅末 - 博客园
cd /etc/yum.repos.d
cp CentOS-Base.repo CentOS-Base.repo.backup
vi CentOS-Base.repo
修改后:(建议直接全删了,重写)
# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ #baseurl=http://vault.centos.org/7.9.2009/x86_64/os/ baseurl=http://vault.centos.org/7.9.2009/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ #baseurl=http://vault.centos.org/7.9.2009/x86_64/os/ baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #$baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ #baseurl=http://vault.centos.org/7.9.2009/x86_64/os/ baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ #baseurl=http://vault.centos.org/7.9.2009/x86_64/os/ baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
保存并退出
阿里云镜像源:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
执行:
sudo yum clean all
------清除索引缓存
sudo yum makecache
------重建 yum 缓存
cd /文件名
------文件传输的存储地址
cd
后跟一个空格和波浪号 (~)[非必要],表示切换到当前用户的 home 目录
传文件:rz
--完毕--> 查看已经传好的文件:ls
3.2 ssh免密登录:master 远程连接 s1 、 s2 (因为烦人的hadoop后期需要)
一般:ssh s1
-> 退出:exit
从 namenode 到本身及各 datanode 免密登录
在各机器上执行(在免密登录的用户下):ssh-keygen -b 1024 -t rsa
(一路回车,master要把他的公钥传给s1、s2,s1与s2也要执行用以生成私钥传给master)
在~/.ssh/下生成:私钥id_rsa,公钥id_rsa.pub:【查看隐藏文件】 ls -all
cd .ssh
-> 看文件:ls
(公私钥)
master 免密登录 s1、s2:master 发公钥给 s1、s2(放到 si 的 authorized_keys 文件里)
- master:
cd .ssh
ssh-copy-id s1
(机器节点)
ssh-copy-id s2
ssh-copy-id master
(不用输入自己的密码)
- s1:
cd .ssh
ssh-copy-id s1
- s2:操作同s1
cd .ssh
ssh-copy-id s2
- 验证是否成功:master 免密登录 s1、s2
先查看一下:vi authorized_keys
登录:ssh si
登出:exit
3.2 设置权限:
cd .ssh
chmod 600 authorized_keys
--chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令[600 可读可写]
3.3 设置集群时钟同步:解决请求超时问题
[超级用户操作:su root
]
cd .ssh
自动定时同步(设置系统定时任务):crontab -e
(vi
操作,i
插入,Esc
,:wq
)
增:
0 1 * * * /user/sbin/ntpdata cn.pool.ntp.org
------每小时从网址上获取并更新时间
时间格式:
f1 f2 f3 f4 f5 program(命令 参数)
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
查看时间:clock
3.4 解压与安装:master、s1、s2
cd
先查看文件:ls
tar -xzvf 待解压的文件名 -c 目标路径
tar -czvf 待压缩的文件名 文件或目录
解压在现文件夹:
tar -xzvf hadoop-3.3.6.tar.gz
tar -xzvf jdk-8u431-linux-x64.tar.gz
删除文件:
rm 文件1 文件2 文件3
rm jdk-18.0.2.1_windows-x64_bin.exe
删除文件夹及其内容:
rm -r 文件夹名
【-r 参数(递归删除)来确保连同子文件夹一起删除】
rm -rf 文件名
【-rf 强制删除】
查看:ls
-> [anaconda-ks.cfg hadoop-3.3.6 hadoop-3.3.6.tar.gz jdk1.8.0_431 jdk-8u431-linux-x64.tar.gz]
创建文件夹:
mkdir 名称
vi
升级版 vim
的安装:yum install vim -y
3.5 配置 jdk 环境变量:master、s1、s2 三个路径统一
查看文件:ls -all
【.bash_profile】
修改配置文件:vim .bash_profile
增:
export JAVA_HOME=/root/jdk1.8.0_431
export PATH=$JAVA_HOME/bin:$PATH
:
为分隔符PATH的作用:便于程序执行时从系统目录找Java等文件
应用修改后的配置:source .bash_profile
查看Java版本:java -version
将 jdk 文件从 master 上复制到 s1、s2:
scp -r jdk1.8.0_431 root@s1:~/
scp -r jdk1.8.0_431 root@s2:~/
【命令:
scp [可选参数] file_source file_target
】【命令:
scp -r local_folder remote_username@remote_ip:remote_folder
】【删除文件夹及其内容:
rm -rf $HADOOP_HOME
】
分别对 s1、s2 配置 jdk 环境变量...... 【vim .bash_profile ......
】
4. 修改 hadoop 默认值【官方文档 hadoop /Index of /docs】
解压 hadoop-3.3.6 在现文件夹: tar -xzvf hadoop-3.3.6.tar.gz
hadoop-3.3.6/etc/hadoop/
- core-default.xml
- hdfs-default.xml
- hdfs-rbf-default.xml
- mapred-default.xml
- yarn-default.xml
- kms-default.xml
- httpfs-default.xml
cd hadoop-3.3.6
cd etc
cd hadoop
或一步到胃 cd hadoop-3.3.6/etc/hadoop/
4.1修改 core-site.xml 文件
vim core-site.xml
------该改的改,下同
<configuration>
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定Hadoop的临时文件的本地存放路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop-3.3.6/data/tmp</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 配置该root(superUser)允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 配置该root(superUser)允许通过代理用户所属组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 配置该root(superUser)允许通过代理的用户-->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
4.2 修改 hadoop-env.sh 文件
vim hadoop-env.sh
<configuration>
<!-- 指定HDFS的主节点的元数据文件的本地存放路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoop-3.3.6/data/namenode</value>
</property>
<!-- 指定HDFS的数据节点的数据文件的本地存放路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoop-3.3.6/data/datanode</value>
</property>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9010</value>
</property>
<!-- 2nn web端访问地址 NameNode 和 SecondaryNameNode 尽量不要安装在同一台服务器-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9020</value>
</property>
<!-- 指定HDFS的数据分块的备份数量/虚拟机数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
4.3 修改 mapred-site.xml 文件
vim mapred-site.xml
<configuration>
<!-- 指定MapReduce所使用的外部管理框架,这里使用Hadoop 3.3.6自带的YARN资源管理器 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- jobhistory properties -->
<!-- 设置 mapreduce 的历史服务器地址和端口号 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:9030</value>
</property>
<!-- mapreduce 历史服务器的 web 访问地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:9040</value>
</property>
</configuration>
4.4 修改 yarn-site.xml 文件
vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定ResourceManager -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<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>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/root/hadoop-3.3.6/data/local</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/root/hadoop-3.3.6/data/tmp/logs</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:9040/jobhistory/logs/</value>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
$HADOOP_HOME/etc/hadoop:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs:$HADOOP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/yarn:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*
</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
4.5 修改 yarn-env.sh 文件
在 yarn-env.sh 文件末尾加上:vim yarn-env.sh
增:export JAVA_HOME=/root/jdk1.8.0_431
4.6 修改 workers 文件
修改 workers 【不能有空格和空行】 删除原有 localhost:vim workers
增:
s1
s2
4.6 修改两个 dfs.sh 与 两个 yarn.sh 文件
cd
cd hadoop-3.3.6/sbin
vim start-dfs.sh
vim stop-dfs.sh
两个文件顶部添加:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vim start-yarn.sh
vim stop-yarn.sh
两个文件顶部添加:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
4.7 修改 hosts
文件
cd
cd hadoop-3.3.6/etc/
vim hosts
增:
192.168.17.10 master master.centos.com
192.168.17.20 s1 s1.centos.com
192.168.17.30 s2 s2.centos.com
4.8 修改 .bash_profile
文件
【在 s1、s2 上也要配置】
cd
vim .bash_profile
增:
PATH=$PATH:$HOME/bin
export JAVA_HOME=/root/jdk1.8.0_431
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/root/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source .bash_profile
4.9 修改 .bashrc
文件
【在 s1、s2 上也要配置】
cd
vim .bashrc
增:
PATH=$PATH:$HOME/bin
export JAVA_HOME=/root/jdk1.8.0_431
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/root/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source .bashrc
4.10 新建上述配置中要的文件夹:【有的会自动创建,非必要】 mkdir 名称
cd /root/hadoop-3.3.6
mkdir data
cd data
mkdir namenode
mkdir datanode
mkdir tmp
mkdir local
cd tmp
mkdir logs
4.11 将 hadoop 文件从 master 上复制到 s1、s2:【命令:scp [可选参数] file_source file_target
】
scp -r hadoop-3.3.6 root@s1:~/
scp -r hadoop-3.3.6 root@s2:~/
分别对 s1、s2 配置 hadoop 环境变量...... 【vim .bash_profile ......
】
【在 s1、s2 上配置 ------参上】
vim .bash_profile
source .bash_profile
vim .bashrc
source .bashrc
5. 启动 hadoop:
查看Java版本:java -version
查看hadoop版本:hadoop version
hadoop-3.3.6/bin
格式化 NameNode 【只需要一次格式化即可,后续启动无需格式化】:hdfs namenode -format
/ hadoop namenode -format
(前面不行可试)
hadoop-3.3.6/sbin ------【sh文件不行,试试cmd文件】
开启 ResourceManager 和 NodeManager(------不关闭窗口),命令: start-yarn.sh
开启 DataNode 和 NameNode(------不关闭窗口),命令: start-dfs.sh
一步到位: start-all.sh
/ start-all.cmd
(前面不行可试)
查看进程命令: jps
2209 NameNode
2707 ResourceManager
2469 SecondaryNameNode
4046 Jps
在本地电脑添加映射:
地址: C:\Windows\System32\drivers\etc
增: ------我的本地没有 hosts,自己新建一个
192.168.17.10 master
192.168.17.20 s1
192.168.17.30 s2
关闭进程命令:
stop-dfs.sh
stop-yarn.sh
一步到位: stop-all.sh
/ stop-all.cmd
(前面不行可试)