1.集群购买

去年正好赶上双十一,之前注册过阿里云的账号(实名认证过)没办法体验新用户优惠 华为云正好也有活动,2核4G 半年 112.72 (购买了三台 338.16)

Hadoop集群 - 图1

华为云

购买界面

Hadoop集群 - 图2

弹性云服务器

安全组

hadoop101的安全组配置信息

Hadoop集群 - 图3
配置规则
所有的安全组配置
Hadoop集群 - 图4
所有的安全组配置

配置安全组

Sys-WebServer安全组填加大数据相关端口

  1. Hadoop:
  2. 50070: HDFS WEB UI端口
  3. 8020 : 高可用的HDFS RPC端口
  4. 9000 : 非高可用的HDFS RPC端口
  5. 8088 : Yarn WEB UI 接口
  6. 8485 : JournalNode RPC端口
  7. 8019 : ZKFC端口
  8. 19888: jobhistory WEB UI端口

Hadoop集群 - 图5

入网规则

远程连接工具

  • 常规工具SecureCRT、Xshll
  • 很好用MobaXterm (目前仅支持Windows)
  • 推荐使用FinalShell (Mac、Windows都支持)
    1. Windows版下载地址:
    2. http://www.hostbuf.com/downloads/finalshell_install.exe
    3. macOS版下载地址:
    4. http://www.hostbuf.com/downloads/finalshell_install.pkg

    FinalShell 连接界面

    Hadoop集群 - 图6
    连接界面

2.安装软件

资源目录

  • /opt 根目录

    创建新文件夹管理安装的软件

  • /opt/module 安装应用程序(如:jdk、Tomcat)

  • /opt/software 安装资源文件 (如: mysql的jar包、jdk.tar包)

Hadoop集群 - 图7

安装JDK1.8

下载

官网

官网下载路径:https://www.oracle.com/java/technologies/downloads/#java8

Hadoop集群 - 图8

华为云

国内仓库(华为云): https://mirrors.huaweicloud.com/java/jdk/8u202-b08/

Hadoop集群 - 图9

上传文件

Hadoop集群 - 图10

修改权限

chmod

r:4 读权限 w:2 写权限 x:1 执行权限

owner group others 三个身份

修改jdk1.8 tar包权限 chmod 700 jdk-8u202-linux-x64.tar.gz
Hadoop集群 - 图11

解压tar包

Liunx 安装tar命令

yum install -y tar

Hadoop集群 - 图12
解压jdk8到module文件夹

tar -zxvf jdk-8u202-linux-x64.tar.gz ../module/

Hadoop集群 - 图13

修改环境变量

修改/etc/profile文件

vim /etc/profile

配置jdk1.8环境变量

  1. # 配置jdk1.8 环境变量
  2. export JAVA_HOME=/opt/module/jdk1.8.0_202
  3. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
  4. export JRE_HOME=${JAVA_HOME}/jre
  5. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
  6. export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
  7. export PATH=$PATH:${JAVA_PATH}

Hadoop集群 - 图14
让profile文件立即生效

source /etc/profile

测试是否安装成功

java -version

Hadoop集群 - 图15

配置免密登录

修改主机名称

参考:华为云文档 https://support.huaweicloud.com/ecs_faq/zh-cn_topic_0050735736.html

教程:

  1. 修改 hostname
    vim /etc/hostname
    hostname文件下
    如:名称改为hadoop101
  2. 修改 network
    vim /etc/sysconfig/network

    1. 说明:如果配置文件中没有HOSTNAME,请手动补充并将参数值设置为修改后的主机名

    如:HOSTNAME=new_hostname
    Hadoop集群 - 图16

  3. 修改 cloud.cfg
    vim /etc/cloud/cloud.cfg
    注释语句- update_hostname
    Hadoop集群 - 图17

  4. 重启弹性云服务器
    reboot
    1. 修改 主机名和ip映射关系
      • vim /etc/hosts
      • 修改内容
        Hadoop集群 - 图18
      • 修改后所有主机名称 | 主机名称 | hadoop101 | hadoop102 | hadoop103 | | —- | —- | —- | —- |

免密登录

  • 生成公钥和私钥

    ssh-keygen -t rsa
    然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

  • 拷贝公钥到其他机器上

    每台机器都执行

  • .ssh文件夹下(~/.ssh)的文件
    | known_hosts | 记录ssh访问过计算机的公钥(public key) | | —- | —- | | id_rsa | 生成的私钥 | | id_rsa.pub | 生成的公钥 | | authorized_keys | 存放授权过得无密登录服务器公钥 |

ssh密钥文件报错

报错现象
Hadoop集群 - 图19
解决方法

  1. vi ~/.ssh/known_hosts

将对应的IP地址信息全部清空,重新ssh-copy-id就行了

分发脚本

xsync集群分发脚本 (参考:尚硅谷xsync集群脚本)

实现循环复制文件到所有节点的相同目录下

  • 安装 rsync

    yum -y install rsync

  • rsync命令原始拷贝

    rsync -rvl /opt/module root@hadoop103:/opt/

  • 脚本实现 ```powershell

    !/bin/bash

    1 获取输入参数个数,如果没有参数,直接退出

    pcount=$# if((pcount==0)); then

    1. echo no args;
    2. exit;

    fi

2 获取文件名称

p1=$1 fname=basename $p1 echo fname=$fname

3 获取上级目录到绝对路径

pdir=cd -P $(dirname $p1); pwd echo pdir=$pdir

4 获取当前用户名称

user=whoami

5 循环

for((host=102; host<104; host++)); do echo —————————- hadoop$host ——————— rsync -rvl $pdir/$fname $user@hadoop$host:$pdir done “xsync” 26L, 487C

  1. <a name="flhgB"></a>
  2. ## 安装Hadoop
  3. <a name="zDrXD"></a>
  4. ### 集群规划
  5. > 参考:[https://github.com/wangzhiwubigdata/God-Of-BigData/blob/master/大数据框架学习/installation/Hadoop集群环境搭建.md](https://github.com/wangzhiwubigdata/God-Of-BigData/blob/master/%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%A1%86%E6%9E%B6%E5%AD%A6%E4%B9%A0/installation/Hadoop%E9%9B%86%E7%BE%A4%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md)
  6. ![hadoop集群规划.png](https://cdn.nlark.com/yuque/0/2022/png/1438965/1647054391171-9ecb6c6a-b035-4e90-9d89-f221ca1b3405.png#clientId=u47056a9f-4155-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=u4d9f5613&margin=%5Bobject%20Object%5D&name=hadoop%E9%9B%86%E7%BE%A4%E8%A7%84%E5%88%92.png&originHeight=328&originWidth=599&originalType=binary&ratio=1&rotation=0&showTitle=false&size=22060&status=done&style=none&taskId=u5f009da5-6109-43b8-a2d4-ce6b03b316d&title=)
  7. <a name="dEajO"></a>
  8. #### 下载hadoop资源
  9. 华为云<br />国内仓库(华为云):[https://repo.huaweicloud.com/apache/hadoop/common/](https://repo.huaweicloud.com/apache/hadoop/common/)<br />官方<br />apache仓库地址: [https://archive.apache.org/dist/hadoop/common/](https://archive.apache.org/dist/hadoop/common/)<br />![image_19.png](https://cdn.nlark.com/yuque/0/2022/png/1438965/1647054563510-61f21a0d-5a40-47de-a369-dd5525552672.png#clientId=u47056a9f-4155-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=ubedbaf35&margin=%5Bobject%20Object%5D&name=image_19.png&originHeight=340&originWidth=965&originalType=binary&ratio=1&rotation=0&showTitle=false&size=48749&status=done&style=none&taskId=u0d36c71b-4a1e-4499-9308-fdc565e6ba2&title=)<br />下载202M的tar包<br />![image_20.png](https://cdn.nlark.com/yuque/0/2022/png/1438965/1647054577852-4c4b3634-36b8-4319-a648-d98d4137fdab.png#clientId=u47056a9f-4155-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=u6c770c60&margin=%5Bobject%20Object%5D&name=image_20.png&originHeight=307&originWidth=1049&originalType=binary&ratio=1&rotation=0&showTitle=false&size=45638&status=done&style=none&taskId=u87afb3a9-07d3-442d-9219-098990b1722&title=)
  10. <a name="c1oyk"></a>
  11. #### hadoop文件目录
  12. ![image_21.png](https://cdn.nlark.com/yuque/0/2022/png/1438965/1647054590947-c512f228-ad9c-450e-b695-c6a07d6885d2.png#clientId=u47056a9f-4155-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=u3e33b1d1&margin=%5Bobject%20Object%5D&name=image_21.png&originHeight=380&originWidth=1140&originalType=binary&ratio=1&rotation=0&showTitle=false&size=583092&status=done&style=none&taskId=u237f62aa-3585-4450-b0af-b7fab33e83c&title=)<br />目录说明
  13. ```lua
  14. bin目录: 存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
  15. etc目录: Hadoop的配置文件目录,存放Hadoop的配置文件
  16. lib目录: 存放Hadoop的本地库(对数据进行压缩解压缩功能)
  17. sbin目录: 存放启动或停止Hadoop相关服务的脚本
  18. share目录: 存放Hadoop的依赖jar包、文档、和官方案例

Hadoop添加到环境变量

安装位置:/opt/module/hadoop-2.7.2

# 配置Hadoop2.7.2 环境变量
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

image_22.png
验证配置环境

hadoop version

image_23.png
注:
HDFS文件无法在本地下载

  • 检查本地hosts文件,配置ip和服务端名称映射关系
  • 检测服务端/etc/sysconfig/network文件,配置HOSTNAME=hadoop101

    HDFS 文件配置

    配置文件地址:/opt/module/hadoop-2.7.2/etc/hadoop

hadoop-env.sh

echo $JAVA_HOME

/opt/module/jdk1.8.0_202
修改JAVA_HOME 路径

export JAVA_HOME=/opt/module/jdk1.8.0_202

core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
    <value>hdfs://hadoop101:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

hdfs-site.xml

<!-- 指定HDFS副本的数量 -->
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>

HDFS 启动

当前目录:/opt/module/hadoop-2.7.2

  • 格式化NameNode

    第一次启动时格式化,以后就不要总格式化

    • bin/hdfs namenode -format
  • namenode启动
    • sbin/hadoop-daemon.sh start namenode
  • datanode启动
    • sbin/hadoop-daemon.sh start datanode
  • HDFS WEB UI界面

    WEB UI端口与core-site.xml配置的fs.defaultFS地址有关

    • http://hadoop101:50070/dfshealth.html#tab-overview

      执行命令

      hadoop命令

      执行对应的文件
      hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
      hadoop fs -cat file:///file3 /user/hadoop/file4
      
      hdfs:///user/kaoyaya/input —HDFS文件/user/kaoyaya/input
      file:///opt/module/hadoop-2.7.2 —本地文件/opt/module/hadoop-2.7.2

      YARN文件配置

      配置文件地址:/opt/module/hadoop-2.7.2/etc/hadoop

yarn-env.sh

修改JAVA_HOME 路径

export JAVA_HOME=/opt/module/jdk1.8.0_202

yarn-site.xml

<!-- Reducer获取数据的方式 -->
<property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
     <name>yarn.resourcemanager.hostname</name>
     <value>hadoop101</value>
</property>

mapred-env.sh

修改JAVA_HOME 路径

export JAVA_HOME=/opt/module/jdk1.8.0_202

mapred-site.xml

mapred-site.xml.template重新命名为 mapred-site.xml

<!-- 指定MR运行在YARN上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

YARN启动

启动前必须保证NameNode和DataNode已经启动

  • resourcemanager启动
    • sbin/yarn-daemon.sh start resourcemanager
  • nodemanager启动
    • sbin/yarn-daemon.sh start nodemanager
  • YARN WEB UI界面

注:
YARN WEB UI无法访问

  • 报错信息

    • java.net.ConnectException
      Caused by: java.net.ConnectException: Call From hadoop101/121.36.85.121 to hadoop101:8031 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
      
      image_24.png
  • 解决方案

    参考:https://blog.csdn.net/zhanglong_4444/article/details/99471770

    • yarn.resourcemanager.bind-host 配置
      <!-- 指定YARN的host的地址 -->
      <property>
      <name>yarn.resourcemanager.bind-host</name>
      <value>0.0.0.0</value>
      </property>
      
      image_25.png

      配置历史服务器

      <!-- 历史服务器端地址 -->
      <property>
      <name>mapreduce.jobhistory.address</name>
      <value>hadoop101:10020</value>
      </property>
      <!-- 历史服务器web端地址 -->
      <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>hadoop101:19888</value>
      </property>
      

      启动历史服务器

  • historyserver 启动

    • sbin/mr-jobhistory-daemon.sh start historyserver
  • JobHistory UI界面
    • http://hadoop101:19888/jobhistory

      云服务器异常

      异常IP资源被冻结

      在安装hadoop集群的过程中遇到Shell 工具无法连接,查看发现IP资源被冻结

木马病毒

恶意下载源下载木马程序
image_26.png
木马创建的计划任务
image_27.png

原因

安全组没有对8088端口做访问限制会导致yarn漏洞 任何人都能用这个端口向主机提交任务

image_28.png

后续注意

  • 开启hadoop的kerberos加密认证功能,禁止匿名访问
  • 8088等业务端口限制ip访问
  • 定期备份重要数据