两台实体机器4个虚拟机节点的Hadoop集群搭建(Ubuntu版) ...

千千梦丶琪  金牌会员 | 2023-11-14 05:00:50 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 667|帖子 667|积分 2001

安装Ubuntu

Linux元信息


  • 两台机器,每台机器两台Ubuntu
  • Ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso
  • 处理器数量2,每个处理器的核心数量2,总处理器核心数量4
  • 单个虚拟机内存8192MB(8G),最大磁盘大小30G
参考链接

具体步骤


  • 把下载好的iso文件保存到一个位置

  • 开始在VMware安装Ubuntu

  • 选择网络类型(图片错了,应该是“桥接网络”,详见“配置虚拟机网络”)

  • 指定磁盘容量

  • 设置镜像文件

  • 开始安装Ubuntu

配置虚拟机网络

配置桥接模式


  • 查看宿主机WLAN硬件配置信息

  • 打开VMware中的虚拟网络编辑器,根据宿主机WLAN硬件配置如下信息

设置虚拟机静态IP

​        防止每次开机随机IP,导致无法连接到其他虚拟机

  • 切换root用户(第一次切换root用户需要配置root密码)
    1. sudo passwd
    复制代码
  • 打开01-network-manager-all.yaml文件(网卡配置文件)
    1. vim /etc/netplan/01-network-manager-all.yaml
    复制代码
  • 删除原内容,复制粘贴如下信息(根据实际情况更改)
    1. # Let NetworkManager manage all devices on this system
    2. network:
    3.   ethernets:
    4.     ens33:
    5.       dhcp4: false
    6.       addresses: [192.168.139.101/24]
    7.       routes:
    8.         - to: default
    9.           via: 192.168.139.92
    10.       nameservers:
    11.         addresses: [8.8.8.8]
    12.   version: 2
    复制代码
  • 在宿主机的cmd中运行ipconfig命令查看网络信息,如下图所示:

  • 根据第四步更改第三步的部分信息

    • via:宿主机的默认网关
    • addresses:前三位和宿主机默认网关保持一致,后一位自己随便设置(但要避免和已有ip重复)

安装Hadoop

Hadoop元信息


  • 统一用户名:hjm,密码:000000
  • 四台虚拟机分别为gyt1,gyt2,hjm1,hjm2
  • 四台虚拟机用桥接模式,连接一台手机的热点,虚拟机ip如下:
    hjm1:192.168.139.101
    hjm2:192.168.139.102
    gyt1:192.168.139.103
    gyt2:192.168.139.104
  • 集群部署规划
    hjm1
    hjm2
    gyt1
    gyt2HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNodeDataNodeYARNNodeManagerNodeManagerNodeManagerResourceManager、NodeManager
配置用户sudo权限

​        配置以后,每次使用sudo,无需输入密码

  • 用sudo权限打开sudoers文件
    1. sudo vim /etc/sudoers
    复制代码
  • 增加修改sudoers文件,在%sudo下面新加一行(这里以hjm用户为例)
    1. # Allow members of group sudo to execute any command
    2. %sudo   ALL=(ALL:ALL) ALL
    3. hjm ALL=(ALL) NOPASSWD: ALL
    复制代码
创建目录并更改权限


  • 创建module和software文件夹
    1. sudo mkdir /opt/module
    2. sudo mkdir /opt/software
    复制代码
  • 修改 module、software 文件夹的所有者和所属组均为hjm用户
    1. sudo chown hjm:hjm /opt/module
    2. sudo chown hjm:hjm /opt/software
    复制代码
Ubuntu查看、安装和开启ssh服务


  • 查看ssh服务的开启状态,如果开启,则可以跳过这一部分
    1. ps -e|grep ssh
    复制代码
  • 安装ssh服务
    1. sudo apt-get install openssh-server
    复制代码
  • 启动ssh服务
    1. sudo /etc/init.d/ssh start
    复制代码
​        注意:
​        当你用ssh软件(这里默认是Xhell 7)连接时,不要用root用户连,ssh默认        不能用root直接连,除非修改配置文件
安装JDK


  • 用xftp工具将jdk导入到opt目录下面的software文件夹下面
  • 解压jdk到opt/module目录下
    1. tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
    复制代码
  • 配置jdk环境变量
    (1)新建/etc/profile.d/my_env.sh 文件
    1. sudo vim /etc/profile.d/my_env.sh
    复制代码
    (2)添加以下内容
    1. #JAVA_HOME
    2. export JAVA_HOME=/opt/module/jdk1.8.0_212
    3. export PATH=$PATH:$JAVA_HOME/bin
    复制代码
    (3)保存后退出,source 一下/etc/profile 文件,让新的环境变量 PATH 生效
    1. source /etc/profile
    复制代码
    (4)测试jdk是否安装成功
    1. java -version
    复制代码
安装Hadoop


  • 用xftp工具将hadoop导入到opt目录下面的software文件夹下面
  • 解压hadoop到opt/module目录下
    1. tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
    复制代码
  • 配置hadoop环境变量
    (1)打开/etc/profile.d/my_env.sh 文件
    1. sudo vim /etc/profile.d/my_env.sh
    复制代码
    (2)在 my_env.sh 文件末尾添加如下内容
    1. #HADOOP_HOME
    2. export HADOOP_HOME=/opt/module/hadoop-3.1.3
    3. export PATH=$PATH:$HADOOP_HOME/bin
    4. export PATH=$PATH:$HADOOP_HOME/sbin
    复制代码
    (3)保存后退出,source 一下/etc/profile 文件,让新的环境变量 PATH 生效
    1. source /etc/profile
    复制代码
    (4)测试hadoop是否安装成功
    1. hadoop version
    复制代码
修改配置文件

​        cd到$HADOOP_HOME/etc/hadoop目录
core-site.xml
  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://hjm1:8020</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/opt/module/hadoop-3.1.3/data</value>
  9. </property>
  10. <property>
  11. <name>hadoop.http.staticuser.user</name>
  12. <value>hjm</value>
  13. </property>
  14. </configuration>
复制代码
hdfs-site.xml
  1. <configuration>
  2. <property>
  3. <name>dfs.namenode.http-address</name>
  4. <value>hjm1:9870</value>
  5. </property>
  6. <property>
  7. <name>dfs.namenode.secondary.http-address</name>
  8. <value>gyt1:9868</value>
  9. </property>
  10. </configuration>
复制代码
yarn-site.xml
  1. <configuration>
  2. <property>
  3. <name>yarn.nodemanager.aux-services</name>
  4. <value>mapreduce_shuffle</value>
  5. </property>
  6. <property>
  7. <name>yarn.resourcemanager.hostname</name>
  8. <value>gyt2</value>
  9. </property>
  10. <property>
  11. <name>yarn.nodemanager.env-whitelist</name>
  12. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
  13. NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
  14. RED_HOME</value>
  15. </property>
  16. </configuration>
复制代码
mapred-site.xml
  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. </configuration>
复制代码
workers
  1. hjm1
  2. hjm2
  3. gyt1
  4. gyt2
复制代码
克隆虚拟机


  • 在hjm1和gyt1的两台宿主机上分别克隆出hjm2和gyt2


  • 按照“配置虚拟机网络-设置虚拟机静态IP”的方式,配置hjm2的ip为192.168.139.102,gyt2的ip为192.168.139.104
  • 改每台虚拟机的ubuntu映射文件,这里以gyt2为例
    1. 127.0.0.1       localhost
    2. # 127.0.1.1       gyt2 记得删除这一行
    3. 192.168.139.101 hjm1
    4. 192.168.139.102 hjm2
    5. 192.168.139.103 gyt1
    6. 192.168.139.104 gyt2
    复制代码
  • 修改四台虚拟机的主机名分别为hjm1,hjm2,gyty1,gyt2
    1. sudo vim /etc/hostname
    复制代码
  • 重启虚拟机
ssh免密登录


  • 分别要配置16种免密登录,如下图所示


  • 切换hjm用户,cd到~/.ssh,生成公钥和私钥
    1. ssh-keygen -t rsa
    复制代码
  • 将公钥复制到目的机上,这里以hjm1举例
    1. ssh-copy-id hjm1
    复制代码
xsync集群分发脚本


  • 在/home/hjm/bin目录下创建xsync文件
  • 在该文件中编写如下代码
    1. #!/bin/bash
    2. #1. 判断参数个数
    3. if [ $# -lt 1 ]
    4. then
    5. echo Not Enough Arguement!
    6. exit;
    7. fi
    8. #2. 遍历集群所有机器
    9. for host in hadoop102 hadoop103 hadoop104
    10. do
    11. echo ==================== $host ====================
    12. #3. 遍历所有目录,挨个发送
    13. for file in $@
    14. do
    15. #4. 判断文件是否存在
    16. if [ -e $file ]
    17. then
    18. #5. 获取父目录
    19. pdir=$(cd -P $(dirname $file); pwd)
    20. #6. 获取当前文件的名称
    21. fname=$(basename $file)
    22. ssh $host "mkdir -p $pdir"
    23. rsync -av $pdir/$fname $host:$pdir
    24. else
    25. echo $file does not exists!
    26. fi
    27. done
    28. done
    复制代码
  • 修改脚本xsync具有执行权限
    1. chmod +x xsync
    复制代码
  • 测试脚本
    1. xsync /home/atguigu/bin
    复制代码
  • 将脚本复制到/bin中,以便全局调用
    1. sudo cp xsync /bin/
    复制代码
  • 在客户端电脑(默认windows)配置映射
    (1)windows + R
    (2)输入drivers,回车
    (3)进入etc文件夹
    (4)编辑hosts文件
    1. 192.168.139.101 hjm1
    2. 192.168.139.102 hjm2
    3. 192.168.139.103 gyt1
    4. 192.168.139.104 gyt2
    复制代码
测试hadoop


  • 格式化NameNode
    如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
    1. hdfs namenode -format
    复制代码
  • 在hjm1上启动hdfs
    1. sbin/start-dfs.sh
    复制代码
  • 在gyt2上启动yarn
    1. sbin/start-yarn.sh
    复制代码
  • Web 端查看 HDFS 的 NameNode
    http://hjm1:9870
  • Web 端查看 YARN 的 ResourceManager
    http://gyt2:8088
  • 测试结果
    (1)datanode

    (2)Yarn

    (3)WordCount

报错及解决


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表