20241102-Windows 10上安装虚拟机VMware10.0.2、Hadoop3.3.6与jdk1.8.0

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.2Xshell8.0

Windows 10 端提前下载好必要的软件包:hadoop-3.3.6.tar.gzjdk-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/hostsi 进入编辑模式

增:【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 文件里)

  1. master:

cd .ssh
ssh-copy-id s1(机器节点)
ssh-copy-id s2
ssh-copy-id master(不用输入自己的密码)

  1. s1:

cd .ssh

ssh-copy-id s1

  1. s2:操作同s1

cd .ssh

ssh-copy-id s2

  1. 验证是否成功:master 免密登录 s1、s2

先查看一下:vi authorized_keys

登录:ssh si

登出:exit

3.2 设置权限:

cd .ssh

chmod 600 authorized_keys

--chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令[600 可读可写]

Linux chmod 命令 | 菜鸟教程

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(前面不行可试)

相关推荐
二进制_博客1 小时前
Flink学习连载第二篇-使用flink编写WordCount(多种情况演示)
大数据
hong1616882 小时前
大数据技术Kafka详解:消息队列(Messages Queue)
大数据·分布式·kafka
陌小呆^O^3 小时前
关于C/C++Windows下连接MYSQL操作
c语言·c++·windows
菜鸟挣扎史9 小时前
grafana+prometheus+windows_exporter实现windows进程资源占用的监控
windows·grafana·prometheus·进程·process
隔着天花板看星星11 小时前
Kafka-创建topic源码
大数据·分布式·中间件·kafka
goTsHgo11 小时前
在Spark Streaming中简单实现实时用户画像系统
大数据·分布式·spark
老周聊架构12 小时前
聊聊Flink:Flink中的时间语义和Watermark详解
大数据·flink
别这么骄傲12 小时前
Flink Lookup Join(维表 Join)
大数据·flink·linq
大今野12 小时前
windows系统中实现对于appium的依赖搭建
windows·appium
Mephisto.java12 小时前
【大数据学习 | flume】flume Sink Processors与拦截器Interceptor
大数据·sql·oracle·sqlite·json·flume