项目实训第一天

本文最后更新于:2021年7月23日 晚上

简介

概述

  1. Hadoop是Yahoo!开发后来贡献给了Apache的一套分布式机制
  2. Hadoop提供了简单的编程模型来对大量数据进行计算
  3. Hadoop能够从一台服务器扩展到上千台服务器,每一台服务器都能够进行计算和存储
  4. Hadoop提供了探测和处理异常的机制
  5. Hadoop本身的版本非常混乱,在选择版本的时候需要注意版本和组件之间的兼容性

模块

  1. Hadoop Common:公共模块,实际上就是依赖Nutch的包
  2. Hadoop Distributed File System (HDFS™):分布式文件系统,提供了分布式存储的功能
  3. Hadoop YARN:任务调度和集群的资源管理
  4. Hadoop MapReduce:分布式计算
  5. Hadoop Ozone:对象存储

版本

  1. Hadoop1.X:包含Common、HDFS、MapReduce模块。已经停止使用
  2. Hadoop2.X:包含了Common、HDFS、MapReduce、YARN模块。Hadoop2.X和Hadoop1.X全版本不兼容
  3. Hadoop3.X:包含了所有的模块,和Hadoop2.X部分版本兼容

本次使用的是hadoop-3.1.3

安装步骤

  1. 关闭防火墙

    1
    2
    3
    4
    5
    # 用root用户登录
    # 临时关闭防火墙
    systemctl stop firewalld
    # 永久关闭防火墙
    systemctl disable firewalld
  2. 修改主机名

    1
    2
    vim /etc/hostname
    # 然后删掉localhost,改为自己指定的主机名,例如主机名改成hadoop
  3. 将主机名和IP进行映射

    1
    2
    3
    vim /etc/hosts
    # 添加IP 主机名,例如
    192.168.122.1 hadoop
  4. 重启

    1
    reboot
  5. 进行免密互通

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 产生密钥
    ssh-keygen
    # 复制密钥到root账户的authoried_key中,这样就可以免密用root账户登录hadoop主机
    ssh-copy-id root@hadoop
    # 回车之后输入yes,然后回车输入密码

    # 测试免密是否成功
    ssh hadoop
    # 如果不需要输入密码,则退出ssh登录
    logout
  6. 解压

    1
    tar -xvf hadoop-3.1.3.tar.gz
  7. 配置环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    vim /etc/profile
    # 在文件中添加
    export HADOOP_HOME=/opt/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    # 保存退出,重新生效
    source /etc/profile
    # 检查环境变量是否配置正确
    hadoop version
  8. 进入Hadoop的配置目录

    1
    cd hadoop-3.1.3/etc/hadoop/
  9. 修改文件

    1
    2
    3
    4
    5
    echo $JAVA_HOME# 复制打印出来的JDK的安装路径vim hadoop-env.sh
    # 在文件末尾添加
    export JAVA_HOME=/opt/jdk1.8.0_181
    export HADOOP_CONF_DIR=/opt/hadoop-3.1.3/etc/hadoop
    # 保存退出,重新生效source hadoop-env.sh
  10. 编辑文件

    1
    vim core-site.xml

    在configuration标签中添加

    1
    2
    3
    4
    5
    6
    7
    <property>	
    <name>fs.default.name</name>
    <value>hdfs://hadoop:9000</value>
    </property><property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-3.1.3/tmp</value>
    </property>
  11. 编辑文件

    1
    vim hdfs-site.xml

    在configuration标签中添加

    1
    2
    3
    4
    <property>    
    <name>dfs.replication</name>
    <value>1</value>
    </property>
  12. 编辑文件

    1
    vim mapred-site.xml

    在configuration标签中添加

    1
    2
    3
    4
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
  13. 编辑文件

    1
    vim yarn-site.xml

    在configuration标签中添加

    1
    2
    3
    4
    5
    6
    7
    8
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
  14. 编辑hdfs启动和结束命令文件

    start-dfs.sh和stop-dfs.sh都要修改

    1
    2
    3
    cd /opt/hadoop_3.1.3/sbin
    vim start-dfs.sh
    vim stop-dfs.sh

    在文件开头添加:

    1
    2
    3
    4
    HDFS_DATANODE_USER=root
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
  15. 编辑yarn启动和结束命令文件

    start-yarn.sh和stop-yarn.sh都要修改

    1
    2
    vim start-yarn.sh
    vim stop-yarn.sh

    在文件开头添加:

    1
    2
    3
    YARN_RESOURCEMANAGER_USER=root
    YARN_NODEMANAGER_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
  16. 格式化hdfs并启动

    1
    hdfs namenode -format

    启动:

    1
    start-all.sh

    查看是否启动成功:

    1
    2
    3
    4
    5
    6
    7
    8
    jps

    22400 DataNode
    23043 NodeManager
    23382 Jps
    22908 ResourceManager
    22255 NameNode
    22655 SecondaryNameNode

使用其它工具

  1. 下载HDFS Explorer,连接HDFS,端口填9870,我虽然能连接上但是无法上传文件,会出现Bad Gateway的错误,老师说这个不用也行,直接用IDEA的BigDataTools插件连接。

  2. 打开IDEA,安装BigDataTools插件

    • 解压Hadoop的安装包,给Windows配置Hadoop-3.1.3的环境变量:
    image-20210712092522160
    • 用老师给的bin包,将Hadoop-3.1.3文件夹下的bin内容进行覆盖,不然会报奇奇怪怪的错误

    • 重启打开终端测试hadoop -version,不知道为什么我会输出Java的版本信息???,但是后面能正常连上HDFS,就没管这个问题了

    • 然后用BigDataTools新建HDFS连接:

      • Authentication type: Explicit uri
      • File System URl: 填写你虚拟机的ip:9000
      • Username: root

      image-20210712092111787

      如果你出现了Invalid root的错误,是因为你格式化HDFS后没有进行任何操作,这时候,你在你的虚拟机终端随便操作一下HDFS,如:hadoop fs -mkdir /user,新建一个user文件夹,在回到IDEA进行连接就没问题了。

  3. 新建IDEA maven项目,放入如下pom.xml文件,设置依赖:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <dependencies>
    <!--单元测试-->
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    </dependency>
    <!--日志打印-->
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.12.0</version>
    </dependency>
    <!--Hadoop通用包-->
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>3.1.3</version>
    </dependency>
    <!--Hadoop客户端-->
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>3.1.3</version>
    </dependency>
    <!--Hadoop HDFS-->
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>3.1.3</version>
    </dependency>
    </dependencies>

    如果你拉不下来,请更换镜像源,或者去Maven仓库搜索,换个版本,在拉取依赖。有时候IDEA会抽风,这时候就重启一下。

    然后新建一个module,等待明天开始编程。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!