HDFS CentOS Hadoop3.3

1、准备工作

A.创建Hadoop用户

  1. sudo useradd -m hadoop

-m 是自动建立用户的登入目录,如果不输以新用户身份登入后会出错。
-s指定用户登入后所使用的shell。默认值为/bin/bash。(所以可以不指定)

B.安装更新ssh,配置免密登录

先测试一下登录时是否需要输入密码

  1. $ ssh localhost

如果需要输入密码才能登录,则需要进行配置免密登录

  1. $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  2. $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. $ chmod 0600 ~/.ssh/authorized_keys

C.安装配置Linux服务机上的Java环境

Linux(CentOS7.3)上JDK的下载与安装

2、安装Hadoop

A.下载解压Hadoop安装包,并为解压目录为Hadoop用户授权

https://apache.mirrors.tworzy.net/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
Hadoop安装包文件hadoop-3.3.0.tar.gz

  1. wget https://apache.mirrors.tworzy.net/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
  2. tar zxf hadoop-3.3.0.tar.gz
  3. chown -R hadoop hadoop-3.3.0

B.检查安装

  1. ./bin/hadoop version

image.png

3、单机配置伪分布式HDFS环境启动

A.配置Hadoop脚本中的Java环境

  1. [root@iZuligp6e1dyzfZ hadoop-3.3.0]# which java
  2. /local/dev/jdk1.8.0_161/bin/java
  3. [root@iZuligp6e1dyzfZ hadoop-3.3.0]# vim etc/hadoop/hadoop-env.sh
  4. export JAVA_HOME=/local/dev/jdk1.8.0_161/

image.png

B.配置 ./etc/hadoop/core-site.xml

  1. [root@izbp1gxt3epy9qvyrcc08sz hadoop-3.3.0]# vim ./etc/hadoop/core-site.xml

:::danger 注意:在阿里云主机配置时,core-site.xml这里配置HDFS协议时,建议通过主机名称配置,在/etc/hosts文件配置内网IP和配置的主机名称进行映射,否则如果直接指定为公网IP,则NameNode会启动失败,报绑定异常的错误。
image.png
公网IP映射主机名称的配置如下:
image.png
image.png
该配置使用的主机名称,还需要在对应的Hadoop客户端主机配置公网IP和主机名称的映射。比如Java中通过 Hadoop Client API操作时,需要在运行环境的电脑配置hosts
image.png :::

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>file:/usr/local/hadoop-2.9.2/tmp</value>
  5. <description>Abase for other temporary directories.</description>
  6. </property>
  7. <property>
  8. <name>fs.defaultFS</name>
  9. <value>hdfs://izbp1gxt3epy9qvyrcc08sz:9000</value>
  10. </property>
  11. </configuration>

image.png :::info

  1. 在上面配置文件中使用9000端口前先检查9000端口是否被占用
  2. 在配置<name>fs.defaultFS</name>的value时,ip可以使用主机名称代替,Hadoop在工作时会从/etc/hosts文件中查找与该主机名称映射的ip地址进行访问通信工作。 :::

    C.配置 ./etc/hadoop/hdfs-site.xml

    [root@izbp1gxt3epy9qvyrcc08sz hadoop-3.3.0]# vim ./etc/hadoop/hdfs-site.xml
    
    <configuration>
     <!--官网只配了replication-->
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
     <property>
         <name>dfs.namenode.name.dir</name>
         <value>file:/usr/local/hadoop-2.9.2/tmp/dfs/name</value>
     </property>
     <property>
         <name>dfs.datanode.data.dir</name>
         <value>file:/usr/local/hadoop-2.9.2/tmp/dfs/data</value>
     </property>
    </configuration>
    
    image.png

    D.格式化NameNode

    NameNode是Hadoop的管理节点,相当于门面的作用。
    ./bin/hdfs namenode -format
    
    :::success 出现”successfully formatted”字样表示格式化成功。
    image.png :::

    E.解决以root用户启动Hadoop的报错

    HDFS格式化后启动dfs出现以下错误

    [root@master sbin]# ./start-dfs.sh
    Starting namenodes on [master]
    ERROR: Attempting to operate on hdfs namenode as root
    ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
    Starting datanodes
    ERROR: Attempting to operate on hdfs datanode as root
    ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
    Starting secondary namenodes [slave1]
    ERROR: Attempting to operate on hdfs secondarynamenode as root
    ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
    
    这时需要通过修改脚本文件指定用户来解决 :::info 1、master,slave都需要修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四个文件
    2、如果Hadoop是另外启用其它用户来启动,记得将root改为对应用户 :::

    start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

    #!/usr/bin/env bash
    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    
    image.png

    start-yarn.sh,stop-yarn.sh顶部也需添加以下参数

    #!/usr/bin/env bash
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    

    重新执行./start-dfs.sh,成功启动节点

    [root@master sbin]# ./start-dfs.sh
    WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
    Starting namenodes on [master]
    上一次登录:日 6月  3 03:01:37 CST 2018从 slave1pts/2 上
    master: Warning: Permanently added 'master,192.168.43.161' (ECDSA) to the list of known hosts.
    Starting datanodes
    上一次登录:日 6月  3 04:09:05 CST 2018pts/1 
    Starting secondary namenodes [slave1]
    上一次登录:日 6月  3 04:09:08 CST 2018pts/1
    
    image.png

    F.使用jps命令查看启动的节点

    可以看到NameNode和DataNode已经成功启动
    [root@iZuligp6e1dyzfZ hadoop-3.3.0]# jps
    3408 SecondaryNameNode
    3200 DataNode
    6328 jar
    3065 NameNode
    7164 Jps
    
    image.png

    G.访问Hadoop Web管理控制台

    :::tips Hadoop2.的Web访问端口是50070
    Hadoop3.
    的Web访问端口是9870 ::: image.png

    H.查看Web 界面的文件系统

    image.png
    image.png

    I.使用Hadoop命令操作文件系统

    Docker 安装Hadoop HDFS

    J.在HDFS Web文件系统查看文件管理

    image.png
    点击忘记后能正常看到文件的Block以及文件内容,则表明存储的问题没问题
    image.png

    K.关于下载HDFS Web文件系统的文件主机名找不到无法下载的问题

    在HDFS Web界面中,点击下载文件后,出现主机名解析异常无法下载的问题
    image.png

    检查本地的C:\Windows\System32\drivers\etc\hosts文件中服务器主机的外网IP与服务器主机名称的映射是否配置。

    198.24.178.68 izbp1gxt3epy9qvyrcc08sz
    

    检查服务器安全组中文件下载对应的端口是否开放

    image.png