Hadoop入门

2023-10-26  本文已影响0人  ChadJ

1 大数据概论

1.1 大数据概念

大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
大数据主要解决海量数据的存储和分析计算问题。

1.2 大数据特点(4V)

1.3 应用场景

1.4 部门业务流程

  1. 产品人员提出需求,例如统计总用户数、日活跃用户数、回流用户数等。
  2. 数据部门搭建数据平台、分析数据指标
  3. 数据可视化,报表、邮件、大屏幕等。

1.5 部门组织结构

  1. 平台组
    • Hadoop、Flume、Kafka、HBase、Spark等框架平台搭建
    • 集群性能监控
    • 集群性能调优
  2. 数据仓库组
    • ETL工程师-数据清洗
    • Hive工程师-数据分析、数据仓库建模
  3. 数据挖掘组
    • 算法工程师
    • 推荐系统工程师
    • 用户画像工程师
  4. 报表开发组
    • JavaEE工程师

2 Hadoop概论

2.1 Hadoop是什么

  1. Hadoop是由Apache基金开发的分布式系统基础架构。
  2. 主要解决海量数据的存储和分析计算分体。
  3. 广义上Hadoop通常指Hadoop生态圈,包括:hadoop(hdfs mapreduse\common)、hive、pig、solr、hbase、zookeeper等。

2.2 三大发行版本

2.3 优势

2.4 组成

  1. Hadoop1.x组成
    • MapReduce:计算 + 资源调度
    • HDFS:数据存储
    • Common:辅助工具
  2. Hadoop2.x组成
    • MapReduce:计算
    • Yarn:资源调度
    • HDFS:数据存储
    • Common:辅助工具

2.4.1 HDFS架构概述

  1. NameNode(nn):存储文件的元数据,如文件名、文件目录结构、文件属性,以及每个文件的块列表和块所在的DataNode等。
  2. DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
  3. SecondaryNameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

2.4.2 YARN架构

yarn基本架构
  1. Resource Manager 主要作用
    • 处理客户端请求
    • 监控Node Manager
    • 启动或监控Application Master
    • 资源的分配与调度
  2. Node Manager 主要作用
    • 管理单个节点上的资源
    • 处理来自Resource Manager的命令
    • 处理来自Application Master的命令
  3. Application Master 作用
    • 负责数据的切分
    • 为应用程序申请资源并分配给内部的任务
    • 任务的监控与容错
  4. Container
    Container是YARN中的资源抽象,封装了某个节点上的多维资源,如内存、cpu、磁盘、网络等。

2.4.3 MapReduce架构概述

将计算过程分为两个阶段:Map和Reduce:

2.5 大数据技术生态体系

大数据生态体系
推荐系统架构

3 Hadoop运行环境搭建

3.1 虚拟机环境准备

  1. 克隆/创建虚拟机
  2. 修改虚拟机的静态IP
  3. 修改主机名
  4. 关闭防火墙
  5. 创建hadoop用户
  6. 配置hadoop用户具有root权限
  7. /opt目录下创建文件夹module、software,并修改文件夹所有者
cd /opt
# 因为opt在root下,所以需要sudo
sudo mkdir module
sudo mkdir software
sudo chown hadoop:hadoop module/ software/

3.2 安装JDK

如果安装版本低于1.7,则卸载该JDK

# 查询是否安装
rpm -qa | grep java
# 卸载
sudo rpm -e 软件包
# 查看JDK安装路径
which java

将jdk上传到/opt/software,解压并配置jdk环境变量,这里不再赘述。

3.3 安装Hadoop

hadoop-2.7.2
hadoop-2.7.2.tar.gz上传到/opt/software,然后解压添加环境变量就可以,和JDK安装类似。

cd /opt/software/
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
ls /opt/module/
sudo vi /etc/profile

### 尾部添加
## HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

# 刷新文件
source /etc/profile
# 验证
hadoop version
# 如果不成功则重启
sync
sudo reboot

3.4 Hadoop目录结构

  1. bin:存放对Hadoop相关服务进行操作的脚本;
  2. etc:存放Hadoop的配置文件;
  3. lib:存放Hadoop的本地库;
  4. sbin:存放启动或停止Hadoop相关服务的脚本;
  5. share:存放Hadoop的依赖jar包、文档和官方案例;

4.Hadoop运行模式

Hadoop官方网站:http://hadoop.apache.org/

Hadoop运行模式包括:本地模式、伪分布式模式和完全分布式模式。

4.1 本地运行模式

4.1.1 官方Grep案例

cd /opt/moudle/hadoop-2.7.2
mkdir input
cp etc/hadoop/*.xml input
# 执行MapReduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
# 查看结果
cat output/*

4.1.2 官方WorkCount案例

cd /opt/moudle/hadoop-2.7.2
mkdir wcinput
cd wcinput
# 创建文件
touch wc.input
vi wc.input
# 在文件里输入待统计数据
cd /opt/module/hadoop-2.7.2
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
# 查看结果
cat wcoutput/part-r-0000

4.2 伪分布式模式

4.2.1 启动HDFS并运行MapReduce

  1. 配置集群

    1. 配置hadoop-env.sh,修改JAVA_HOME

      # 查看JDK安装路径
      echo $JAVA_HOME
      # 修改JAVA_HOME
      vi hadoop-env.sh
      export JAVA_HOME=/opt/module/jdk1.8.0_144
      
    2. 配置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>
      
    3. 配置hdfs-site.xml

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

    1. 格式化NameNode,只有第一次启动时格式化,以后不需要

      bin/hdfs namenode -format
      

      格式化NameNode会产生新的集群id,导致NameNodeDataNode的集群id不一致,集群找不到以往数据。格式化NameNode时一定要先删除datalog

    2. 启动NameNode

      sbin/hadoop-daemon.sh start namenode
      
    3. 启动DataNode

      sbin/hadoop-daemon.sh start datanode
      
    4. 可以用jps查看启动是否成功

  3. 查看集群

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

  4. 查看log日志

    在实际使用中遇到bug,可以根据日志去分析。

    cd /opt/module/hadoop-2.7.2/logs
    
  5. 操作集群

    1. 在HDFS上创建一个input文件夹

      bin/hdfs dfs -mkdir -p /user/chadJ/input
      
    2. 将测试文件内容上传到HDFS文件系统

      bin/hdfs dfs -put wcinput/wc.input /user/chadJ/input/
      
    3. 查看上传文件是否正确

      bin/hdfs dfs -ls
      bin/hdfs dfs -cat /user/chadJ/input/wc.input
      
    4. 运行MapReduce程序

      bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/chadJ/input/ /user/chadJ/output
      
    5. 查看结果

      bin/hdfs dfs -cat /user/chadJ/output/*
      

      也可在浏览器中查看。

    6. 将测试内容下载到本地

      bin/hdfs dfs -get /user/chadJ/output/part-r-0000 ./wcoutput/
      
    7. 删除输出结果

      hdfs dfs -rm -r /user/chadJ/output
      
上一篇下一篇

猜你喜欢

热点阅读