• Hadoop的集群搭建及HDFS命令


    环境信息

    1. 硬件:

    内存ddr3 4G及以上的x86架构主机一部
    系统环境:windows

    2. 软件:

    virtualbox
    3. 其他: 无

    步骤与方法

    1. 安装Hadoop并进行集群搭建

    1) 设置集群前的准备工作

    设置网络
    设置两个网卡:
    网卡一,“仅主机网络”,连接主从节点与主机。选中虚拟机,点击设置。进入虚拟机设置界面,点击网络,选择网卡1,选择连接方式——仅主机网络。
    在这里插入图片描述

    网卡二,“桥接连接”,连接主机和主节点、从节点与外部网络。选择网卡2,勾选启用网络连接,选择连接方式——桥接连接,点击高级,在下拉内容的选择混杂模式——全部允许。完成点击ok。
    在这里插入图片描述

    修改配置文件,设置服务器master,重命名虚拟机。
    进入设置,选择常规,选择基本,在名称中输入主节点名称,点击ok
    修改IP地址(修改后不能上网)。
    (1) 使用ifconfig命令查看IP端口名称与当前IP地址,掩码网关,广播地址。
    在这里插入图片描述

    (2) 在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
    sudo gedit /etc/netplan/01-network-manager-all.yaml

     # Let NetworkManager manage all devices on this system
    network:#网络
      version: 2#版本
      renderer: NetworkManager#渲染器
      ethernets:#以太网
        enp0s3:
          addresses: [192.168.1.10/24]
          dhcp4: no
          dhcp6: no
          gateway4: 192.168.1.1#网关
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (3) 输入命令,使刚才的配置生效。
    sudo netplan apply
    (4) 再使用ifconfig命令查看IP地址是否修改成功。
    Ifconfig
    在这里插入图片描述

    修改主机名

    (1) 使用hostname命令查看主机名。
    (2) 修改主机名输入命令,将文件内容修改为主机名(master)。
    sudo gedit /etc/hostname
    (3) 需要重启生效。
    在这里插入图片描述

    配置.xml文件
    直接在home/linlin/hadoop/hadoop—/etc/hadoop/路径下打开终端。
    在这里插入图片描述

    删除datanode存储目录,将IP地址改为主机名。
    在这里插入图片描述

    core-site.xml
    sudo gedit core-site.xml将IP地址改为主机名。
    在这里插入图片描述

    yarn-site.xml将IP地址改为主机名。
    sudo gedit yarn-site.xml
    在这里插入图片描述

    mapred-site.xml
    sudo gedit mapred-site.xml修改内容(设置监控Map与Reduce程序的JobTracker任务分配情况,以及TaskTracker任务运行情况)。
    在这里插入图片描述

    配置节点文件
    修改配置文件/etc/hosts,修改主节点、增加从节点的IP地址和主机名。
    sudo gedit /etc/hosts
    在这里插入图片描述

    修改masters文件
    注意使用了相对路径(原本不存在这个文件,参考文档:Apache Hadoop 3.2.3 – Hadoop Cluster Setup,通过root用户创建)。
    sudo gedit ./hadoop/hadoop—/etc/hadoop/masters
    添加主节点主机名
    在这里插入图片描述

    修改workers文件
    hadoop3使用workers文件列出从节点,hadoop2使用slaves文件。
    sudo gedit ./hadoop/hadoop—/etc/hadoop/workers
    在这里插入图片描述

    防止启动出错
    将/hadoop—路径下的dataNode_1_dir文件夹和logs文件夹删除(选中按delete)。
    建议将hadoop—/hadoop_data/hdfs/datanode和hadoop—/hadoop_data/hdfs/namenode路径下的current文件夹删除。否则可能缺少DataNode进程。

    复制虚拟机

    将服务器master复制出slave1,slave2,省略操作。复制虚拟机之前,关闭虚拟机。
    选中虚拟机,右键复制,进入新虚拟机名称和保存路径界面,输入新虚拟机名称,在下拉框Mac地址设定,选择包含所有网卡的Mac地址,单击下一步。进入副本类型界面,默认选中完全复制,单击复制。弹出进度条,等待复制完成,virtualbox出现新的虚拟机(同样复制下一个虚拟机)。
    在这里插入图片描述

    2) 设置服务器

    与服务器master操作相同(同样方式操作slave1,slave2)。

    修改IP地址

    修改addresses分别为192.168.1.1(192.168.1.2)。
    (1) 使用ifconfig命令查看IP端口名称与当前IP地址,掩码网关,广播地址。
    (2) 在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
    sudo gedit /etc/netplan/01-network-manager-all.yaml
    (3) 输入命令,使刚才的配置生效。
    sudo netplan apply
    (4) 再使用ifconfig命令查看IP地址是否修改成功。
    修改主机名
    修改slave1(slave2)。
    (1) 使用hostname命令查看主机名。
    (2) 修改主机名输入命令,将文件内容修改为主机名。
    sudo gedit /etc/hostname
    (3) 需要重启生效。
    配置hdfs-site.xml
    直接在主目录下输入命令,打开文件:
    sudo gedit ./hadoop/hadoop—/etc/hadoop/hdfs-site.xml
    将之前保留的namenode存储目录替换为datanode存储目录。
    在这里插入图片描述

    ssh无密码连接登录
    (1) 启动全部服务器master,slave1,slave2。
    在这里插入图片描述

    (2) 在master终端输入连接命令,提示输入yes,发现命令提示符会发生变化,即成功连接。
    ssh slave1
    ssh slave2
    (3) 输入命令关闭ssh,发现命令提示符变回,即中断连接。
    Exit
    在这里插入图片描述

    格式化文件系统
    部署HDFS文件系统,只需要在master上格式化,输入命令,弹出提示输入y,出现successfully则成功格式化。
    hdfs namenode -format
    在这里插入图片描述

    3) 启动和关闭Hadoop集群

    启动hadoop命令(分为启动HDFS命令start.dfs.sh和启动YARN命令start.yarn.sh)(首次启动需要格式化,下次启动无需格式化)。
    start-all.sh
    检验hadoop的全部守护进程(需要分别用ssh连接节点服务器,查看各个从节点的守护进程ssh slave1/ssh slave2、exit)。
    jps
    master出现守护进程:NameNode;SecondaryNameNode;ResourceManger;jps
    slave1出现守护进程:NodeManager;DataNode;jps
    slave2出现守护进程:NodeManager;DataNode;jps
    在这里插入图片描述

    关闭hadoop命令(分为关闭HDFS命令stop.dfs.sh和关闭YARN命令stop.yarn.sh)。
    stop-all.sh

    4) 查看Hadoop集群的基本信息

    进入网址https://master:50070查看HDFS监控页面。
    在这里插入图片描述
    在这里插入图片描述
    进入网址https://master:8088查看YARN监控页面。
    在这里插入图片描述

    5) 在Hadoop集群中运行程序

    运行自带的mapreduce程序,计算圆周率的java程序包(jar包——计算圆周率)
    位置:hadoop—/share/hadoop/mapreduce
    文件名:hadoop-mapreduce-examples—.jar
    在这里插入图片描述

    在终端输入命令,其中pi是类名,第一个10表示map次数,第二个10表示随机生成点的次数
    hadoop jar ./hadoop—/share/hadoop/mapreduce/hadoop-mapreduce-examples—.jar pi 10 10
    在这里插入图片描述

    最后两行会显示计算时间、计算结果
    在这里插入图片描述

    总结验证hadoop启动成功的三种方式:jps查看进程;web页面验证;执行MapReduce程序。

    2. HDFS常用命令使用

    1. 创建与查看HDFS目录
    2. 本地计算机和HDFS之间的文件复制
    3. 复制与删除HDFS文件
    4. 查看HDFS文件内容
      在这里插入图片描述
      Linux本机和HDFS之间文件传输
      即虚拟机的linux系统的文件与hadoop的HDFS分布式系统的文件之间的文件共享

    上传文件(linux—>hdfs)

    hadoop fs -copyFromLocal [linux] [hdfs]
    hadoop fs -put [linux] [hdfs]
    可以进行文件重命名。
    hdfs没有写文件名,默认为原来的命名。
    linux上传的文件必须存在。
    hdfs已经存在文件,不会上传,使用下面选项,强制上传。
    -f选项,强制复制(存在则替换文件)。
    可以上传多个文件。
    可以上传目录。
    -put命令,还可以接收输入stdin。
    将指定内容显示在屏幕上:echo [内容]
    通过"|"(管道符pipe)将屏幕的内容传递存入文件(文件不能已经存在)
    echo abc | hadoop fs -put - /test/echoin.txt
    ls ./hadoop—/etc/hadoop | hadoop fs -put - /test/hadoopetc.txt
    文件下载(hdfs—>linux)
    hadoop fs -copyToLocal [hdfs] [linux]
    hadoop fs -get [hdfs] [linux]
    可以进行文件重命名。
    hdfs下载的文件必须存在。
    可以下载目录。
    在这里插入图片描述
    在这里插入图片描述

    出现的问题及解决方法

    1、网络配置问题

    出现问题:编辑/etc/network/interfaces文件信息,再执行下面命令使配置生效,结果找不到命令。
    linlin@master:~$ sudo /etc/init.d/networking restart
    sudo: /etc/init.d/networking:找不到命令。
    在这里插入图片描述

    原因说明:/etc/network路径下原本并没有interfaces文件,/etc/netplan路径下有*.yaml文件。Ubuntu20.04的配置网络不是修改interfaces文件,而是需要修改*.yaml文件。
    解决步骤: 使用命令ifconfig查看IP端口名称,当前IP地址,掩码,广播地址;在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
    sudo gedit /etc/netplan/01-network-manager-all.yaml

     # Let NetworkManager manage all devices on this system
    network:#网络
      version: 2#版本
      renderer: NetworkManager#渲染器
      ethernets:#以太网
        enp0s3:
          addresses: [192.168.1.10/24]
          dhcp4: no
          dhcp6: no
          gateway4: 192.168.1.1#网关
          nameservers:#域名服务器
            addresses: [192.168.1.1,114.114.114.114]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输入命令,使刚才的配置生效:sudo netplan apply。
    再次输入命令,查看修改后的IP地址(对比下面的红色标记),修改成功!
    在这里插入图片描述

    2、重启后,网卡消失不见

    问题说明:网络配置中修改了interfaces文件,结果端口信息都看不到了(本来有enp0s3端口)
    在这里插入图片描述

    解决方法:
    在/etc/network的路径进入终端输入命令,删除文件(建议):rm interfaces。或者清空修改的interfaces文件:sudo gedit /etc/network/interfaces。
    输入下行的命令,使配置生效(sudo /etc/init.d/networking restart这条命令无效):sudo /etc/init.d/network-manager restart。
    再输入命令ifconfig,就可以看到网卡回来了(下图中红色标记为输入的命令)。
    在这里插入图片描述

    3、虚拟机不能上网

    原因说明:当使用网络地址转换时,为10.0.2.15,公网下可以上网;当使用仅主机网络时,为192.168.56.101,为私人网段,不能上网。修改IP地址为192.168.1.10,依然为私人网段,不能上网。
    解决方法:虚拟机未启动的状态下,设置网卡一连接方式为网络地址转换(NAT),其它网卡取消勾选启用网络连接,点击ok。

    4、路径错误

    出现问题:编写masters文件,出现找不到文件,检查输入位置是否正确并重试。
    原因说明:混淆了绝对路径和相对路径,在主目录/home/linlin下打开终端,如下图。
    在这里插入图片描述

    第一条绝对路径正确,根目录/下/etc/hosts文件确实存在。
    第二条绝对路径错误,根目录/下不存在/hadoop…/masters文件。
    第一条相对路径正确,主目录/home/linlin存在/hadoop…/masters文件。
    第一条相对路径正确,主目录/home/linlin存在/hadoop…/masters文件,省略了./。

    4、slave缺少datanode进程

    出现问题:配置好所有节点后,启动hadoop,发现其中slave服务器缺少datanode进程。查看web页面,hdfs页面LiveNode节点数为0,yarn页面正常可以查看node信息。
    原因说明:之前配置hadoop时,创建和产生的临时文件:
    file:///home/linlin/hadoop/hadoop-3.2.3/dataNode_1_dir
    file:///home/linlin/hadoop/hadoop-3.2.3/logs
    file:///home/linlin/hadoop/hadoop-3.2.3/hadoop_data/hdfs/datanode
    file:///home/linlin/hadoop/hadoop-3.2.3/hadoop_data/hdfs/namenode
    这些路径下的/dfs/namesecondary/current/VERSION文件或者/current/VERSION文件与进程的节点存储目录有关。正常的集群应该是:master上只有namenode临时文件,slave上只有datanode临时文件。两个目录的临时文件信息应该通过什么关联,对比文件发现:
    在这里插入图片描述

    格式化namenode文件前后namenode文件中clusterID发生变化,所以与clusterID有关,与layoutVersion这一项无关。
    解决方法一:格式化namenode,将master服务器的namenode路径下的临时文件/current/VERSION的clusterID与slave服务器的datenode路径下临时文件/current/VERSION的clusterID改为一致。启动hadoop。
    解决方法二:删除dataNode_1_dir和logs文件夹,删除节点存储目录的current文件夹,格式化namenode,启动hadoop。
    正常的hadoop进程:
    在这里插入图片描述

    结果、结果分析

    1、 安装Hadoop完成
    2、集群搭建成功
    在这里插入图片描述

    3、练习了HDFS常用命令
    在这里插入图片描述

    实验成功完成。

    心得体会

    随着计算机软硬件技术的飞速发展,计算机的功能越来越强大,使用的范围也越来越广泛,计算机进入家庭已经成为一种世界性的潮流。学习Hadoop大数据处理与分析让我们快速、全面地了解虚拟机的各种知识,加强了我们的实践动手能力和进一步了解理论知识,通过自己动手搭建集群环境,既可以增长知识,又增添无穷的乐趣。虽然时间不是很长,但是我受益匪浅,这次实验,让我们对虚拟机有了更深的了解。
    一个完美的集群是很需要花时间和心思研究它的每一个细节的,在今后生活和学习过程中,继续坚持对问题的观察和研究,并不断把研究所得用以指导自己的行为实践,以争取自己思想的上进和人格的完善,将来要在有用的基础上做一个出色的人。
    欢迎大家加我微信交流讨论(请备注csdn上添加)
    在这里插入图片描述

  • 相关阅读:
    Golang net/http 包中的 RoundTripper 接口详解
    《广西开放大学电大搜题微信公众号——探索学习的新途径》
    商业智能BI
    K210跟随物体(控制舵机转动)
    c++事件总线模型
    二分法题目:在有序数组中A内,查找数组中的某一个元素的下标(本题是从由小到大的顺序)
    【微前端】single-spa 到底是个什么鬼
    Mysql优化---SQL优化准备和explain中的id、table
    数据仓库综述
    【Redis】从计算机组成原理开始讲解为什么会出现Redis
  • 原文地址:https://blog.csdn.net/weixin_45962068/article/details/126024106