【华中科技大学软件学院】云计算:Hadoop实验

一、xshell远程访问服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xj5YTdx4-1656142093629)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623105757828.png)]

二、ssh安装(忽略)

  1. 下载ssh

    yum install -y openssl openssh-server
    
  2. 修改配置文件

    • lsattr /etc/ssh/sshd_config 查看权限
    • chattr -V -ia /etc/ssh/sshd_config 修改权限
    • vim /etc/ssh/sshd_config
    • 03a96193bd4e75a984e97e0bd58333d.png
    • 将上图的PermitRootLoginRSAAuthenticationPubkeyAuthentication的设置打开。
  3. 启动ssh服务

    systemctl start sshd.service
    
  4. 设置开机自动启动ssh服务

    systemctl enable sshd.service
    
  5. 设置文件夹~./ssh的访问权限

    • cd ~

    • chattr -i ./.ssh

    • chmod 700 .ssh

    • chmod 600 .ssh/

    • ls -la .ssh

    • 在这里插入图片描述

    • authorized_keys文件存储的是客户端的公共密钥。

三、配置虚拟机通信(三台)

  • 确保虚拟机之间可以相互访问

    • 比如在某一机器上ping另一个主机的ip:ping 10.64.26.98
    • 在这里插入图片描述
  • 配置虚拟机的hostname

    • vi /etc/hostname,将原内容删除,三台机器分别写入master,data1,data2,然后保存更改该并退出

    • sudo shutdown -r now重启服务器,让hostname生效

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 在这里插入图片描述

  • 配置三台服务器的hosts

    • 修改 /etc/hosts,使用命令vi /etc/hosts

    • 改为如下[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LF1XWlgr-1656142093632)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623155018391.png)]

    • 每个机器都要这样修改

  • 配置服务器之间的ssh免密登录(生成密钥)

    • 在每个服务器上都运行ssh-keygen -t rsa,一直回车即可
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwOVHlJl-1656142093633)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623155138093.png)]
  • 实现节点间的免密访问

    ssh-copy-id -i ~/.ssh/id_rsa.pub master
    ssh-copy-id -i ~/.ssh/id_rsa.pub data1
    ssh-copy-id -i ~/.ssh/id_rsa.pub data2
    
  • 检验配置是否成功:

    • ssh data1,查看是否免密跳转到对应的data1节点(使用exit退出)
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cvgKu9Fp-1656142093633)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623155349451.png)]

四、JDK和Hadoop环境配置

4.1 传送jdk和hadoop文件

  • 使主机的/usr/local文件夹支持写入

    • cd /usr
    • sudo chmod 777 local
  • 解压分布式实验中jdk和hadoop压缩包,然后在此处打开命令行,输入以下命令,将windows本地的hadoop传到主机上:

    scp .\hadoop-2.7.7.tar.gz .\jdk-7u80-linux-x64.tar.gz root@10.64.26.63:/usr/local
    

    此处的10.64.26.63即是主机的ip地址

  • 过程:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xQk068V2-1656142093634)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623153742536.png)]

  • 查看主机对应文件夹

    ls /usr/local
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iPJ8nTUP-1656142093634)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623154043859.png)]

  • 在主机master上,将文件传给其他节点(data1,data2)

    scp hadoop-2.7.7.tar.gz jdk-7u80-linux-x64.tar.gz root@data1:/usr/local
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qhejTeqE-1656142093635)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623155555110.png)]

4.2 安装jdk和hadoop

  • 解压jdk和hadoop

    cd /usr/local
    
    mkdir /usr/java
    
    mkdir /usr/hadoop
    
    tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/java
    
    tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop/
    
  • 配置环境变量

    • vim ~/.bashrc

    • 添加以下语句(复制以下语句,然后再vim中shift+insert)

      export JAVA_HOME=/usr/java/jdk1.7.0_80
      export PATH=$PATH:$JAVA_HOME/bin
      export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2tgSLWcX-1656142093635)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623161953708.png)]

    • 使⽤ source ~/.bashrc ,使其⽴即成效

    • java -versionhdfs version确定环境变量修改成功

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDeuFGT8-1656142093636)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623162128464.png)]

4.3 服务器配置hadoop(每台都需要配置)

  • 使用cd /usr/hadoop/hadoop-2.7.7/etc/hadoop/,进入配置文件夹

  • 修改hadoop-env.sh

    • 使用vim hadoop-env.sh,打开文件开始编辑

    • 找到export JAVA_HOME=的一行,注释掉,添加内容export JAVA_HOME=/usr/java/jdk1.7.0_80

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6AznD5S0-1656142093637)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623163346796.png)]

  • 修改core-site.xml

    • 使⽤ vim core-site.xml ,打开⽂件开始编辑

    • <configuration></configuration> 之间添加内容

      <!-- HDFS Web UI 监听端⼝配置 -->
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:8020</value>
      </property>
      <!-- Hadoop缓存⽬录(⾃动创建) -->
      <property>
      <name>hadoop.tmp.dir</name>
      <value>file:/root/temp/hadoop</value>
      </property>
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FLNJ7zCn-1656142093637)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623192543839.png)]

  • 修改hdfs-site.xml

    • 使⽤vim hdfs-site.xml编辑

    • <configuration></configuration> 之间添加内容

              <!-- 每个block存⼏份 -->
              <property>
                      <name>dfs.replication</name>
                      <value>2</value>
              </property>
              <!-- namenode数据⽬录 -->
              <property>
                      <name>dfs.namenode.name.dir</name>
                      <value>file:/root/temp/hadoop/namenode</value>
              </property>
              <!-- datanode数据⽬录 -->
              <property>
                      <name>dfs.datanode.data.dir</name>
                      <value>file:/root/temp/hadoop/datanode</value>
              </property>
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9rTAcwah-1656142093637)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623192721927.png)]

  • 修改mapred-site.xml

    • 使⽤ cp mapred-site.xml.template mapred-site.xml ,根据模板复制出mapred-site.xml ⽂件

    • 使⽤ vim mapred-site.xml ,编辑⽂件

    • <configuration></configuration> 之间添加内容

              <!-- 设置MapReduce运⾏于yarn之上 -->
              <property>
                      <name>mapreduce.framework.name</name>
                      <value>yarn</value>
              </property>
      
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tz4m0V1I-1656142093638)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623192853892.png)]

  • 修改yarn-site.xml

    • 使⽤ vim yarn-site.xml ,开始编辑

    • <configuration></configuration> 之间添加内容

              <name>yarn.nodemanager.aux-services</name>
                      <value>mapreduce_shuffle</value>
              </property>
              <property>
                      <name>yarn.resourcemanager.hostname</name>
                      <value>master</value>
              </property>
      
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-paj3sf2H-1656142093638)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623193153740.png)]

  • 修改slaves⽂件

    • 使⽤ vim slaves ,开始编辑

    • 删除⽂件内所有内容,然后直接添加

      data1
      data2
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yvg9iJt7-1656142093639)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623193243635.png)]

  • 拷贝所有配置文件到data1,data2

    for i in {1..2}; do
    scp $HADOOP_HOME/etc/hadoop/* data${i}:$HADOOP_HOME/etc/hadoop/;
    done
    

4.4 启动Hadoop

4.4.1 关闭防火墙

​ 在3个节点进⾏如下操作:

# 停掉防⽕墙
service firewalld stop
chkconfig firewalld off

4.4.2 格式化NameNode

hdfs namenode -format

​ 这个命令非常危险!你应当只在新建集群后执行一次,因为namenode保存的是HDFS的所有元信息,如果丢失了,整个集群中DataNode的数据都无法访问,就算它们还在磁盘上

4.4.3 启动HDFS

​ 运⾏NameNode daemon和DataNode daemon

  • 使⽤ sbin/start-dfs.sh ,启动dfs服务

  • 正确启动,会有如下提⽰;并且输⼊jps也会有类似的 SecondaryNameNode, Jps, NameNode 这样的提⽰

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7c296eXG-1656142093639)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623185913314.png)]

  • dataX节点也可输⼊jps查看相应提示

  • 如需关闭hdfs服务,在hadoop⽬录下使⽤ sbin/stop-dfs.sh

4.4.4 开启YARN

​ 运⾏ResourceManager daemon和NodeManager daemon

  • 使⽤ sbin/start-yarn.sh ,启动yarn服务

  • 正确启动,会有如下提⽰;并且输⼊jps也有类似提示

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSu95HFx-1656142093640)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623224132304.png)]

  • 如需关闭,使用 sbin/stop-yarn.sh

4.4.5 使用前的准备工作

  • 使用xftp将 将测试⽂件 tale.txtwar_peace.txt 上传到服务器上

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82KyUgHw-1656142093641)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623224317171.png)]
  • 将测试⽂件 tale.txtwar_peace.txt 上传到hdfs

    hadoop fs -copyFromLocal tale.txt /
    hadoop fs -copyFromLocal war_peace.txt /
    
    # 查看
    hadoop fs -ls /
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jxuPvMa5-1656142093641)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623225234386.png)]

  • 在hdfs上创建⽬录并移动文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJTDHHL8-1656142093642)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623225315182.png)]

4.4.6 在master节点使⽤mapreduce-wordcount

  • 当hdfs和yarn服务成功开启后,便可以执行mapreduce程序
  • 常规的指令为 hadoop jar jarFile [mainClass] args
    • 如果自己编写了Java开发的MapReduce版wordcount程序,需要将其打包成jar 包,然后使⽤上述指令执行

  1. 利⽤mapredice-wordcount对tale.txt进⾏单词统计

    • 先进进入mapreduce文件夹

      # 进⼊mapreduce ⽰例程序⽂件夹
      cd $HADOOP_HOME/share/hadoop/mapreduce
      
    • 执行

    hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /small/tale.txt /wordcount/output
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qPrUszRQ-1656142093642)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623192031415.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-16ukLVf7-1656142093643)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623192052691.png)]

  1. 查看结果

    使⽤ hadoop fs -ls -R / ,查看wordcount执⾏完成后hdfs的状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kRqEJQtb-1656142093643)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623192115354.png)]

  1. 把wordcount输出⽂件从hdfs拷⻉到本地
# 切换⾄~⽬录
cd
# 查看当前~⽬录状态
ll
# 将wordcount输出⽬录/wordcount/output拷⻉到本机~⽬录
hadoop fs -copyToLocal /wordcount/output
# 查看拷⻉后~⽬录状态
ll
# 切换⾄output⽬录
cd output/
# 查看output⽬录状态
ll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zx26NSAV-1656142093644)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623230159503.png)]
4. 查看输出文件

less part-r-00000

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XKDeb09h-1656142093645)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220623230305890.png)]

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值