Hadoop

大数据介绍

随着计算机技术的发展,互联网的普及,信息的积累 已经到了一个非常庞大的地步,信息的增长也在不断的加快,随着互联网、物联网建设的加快,信息更是爆炸式增长,收集、检索、统计这些信息越发困难, 必须使用新的技术来解决这些问题

1)大数据定义

  • 大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产
  • 是指从各种各样类型的数据中,快速获得有价值的信息

2)大数据能做什么

  • 企业组织利用相关数据分析帮助他们降低成本、提高效率、开发新产品、做出更明智的业务决策等
  • 把数据集合并后进行分析得出的信息和数据关系性, 用来察觉商业趋势、判定研究质量、避免疾病扩散、打击犯罪或测定即时交通路况等
  • 大规模并行处理数据库,数据挖掘电网,分布式文件系统或数据库,云计算平和可扩展的存储系统等

3)大数据的5V特征

  • (V)olume(大体量)
    可从数百TB到数十数百PB、甚至EB的规模
  • (V)ariety(多样性)
    大数据包括各种格式和形态的数据
  • (V)elocity(时效性)
    很多大数据需要在一定的时间限度下得到及时处理
  • (V)eracity(准确性)
    处理的结果要保证一定的准确性
  • (V)alue(大价值)
    大数据包含很多深度的价值,大数据分析挖掘和利用将带来巨大的商业价值

4)大数据与Hadoop

Hadoop是什么

  • Hadoop是一款开源软件,使用JAVA开发
  • Hadoop可以提供一个分布式基础架构
  • Hadoop是一种分析和处理海量数据的软件平台
  • Hadoop特点
    • 高可靠性、高扩展性、高效性、高容错性、低成本

Hadoop

1)Hadoop组件

  • HDFS: Hadoop分布式文件系统(核心组件)
  • MapReduce:分布式计算框架(核心组件)
  • Yarn:集群资源管理系统(核心组件)
  • Zookeeper:分布式协作服务
  • Hbase:分布式列存数据库
  • Hive:基于 Hadoop的数据仓库
  • Sqoop:数据同步工具
  • Pig:基于 Hadoop的数据流系统
  • Mahout:数据挖掘算法库
  • Flume:日志收集工具

在这里插入图片描述

2)HAdoop生态系统

在这里插入图片描述

3)HDFS结构

在这里插入图片描述
角色及概念:
Hadoop体系中数据存储管理的基础,是一个高度容错的系统,用于在低成本的通用硬件上运行

角色: Client / Namenode / Secondarynode / Datanode

  1. Namenode
  • Master节点,管理HDFS的名称空间和数据块映射信 息,配置副本策略,处理所有客户端请求
  1. Secondary NameNode
  • 定期合并 fsimage和 fsedits,推送给 NameNode
  • 紧急情况下,可辅助恢复 NameNode 。但 Secondary NameNode并非 NameNode的热备
  1. DataNode
  • 数据存储节点,存储实际的数据
  • 汇报存储信息给 Namenode
  1. Client
  • 按Block设置的大小切分文件
  • 访问HDFS
  • 与 Namenode交互,获取文件位置信息
  • 与 DataNode交互,读取和写入数据
  1. Block
  • 每块缺省128MB大小
  • 每块可以多个副本

4)MapReduce结构

在这里插入图片描述

角色和概念:
源自于Google的MapReduce论文,JAVA实现的分布式计算框架

角色:JobTracker / Task Tracker / Map Task / Reducer Task

  1. JobTracker
  • Master节点只有一个
  • 管理所有作业/任务的监控、错误处理等
  • 将任务分解成一系列任务,并分派给Task Tracker
  1. TaskTracker
  • Slave节点,一般是多台
  • 运行Map Task和Reduce Task
  • 并与JobTracker交互,汇报任务状态
  1. Map Task
  • 解析每条数据记录,传递给用户编写的 map()并执行,将输出结果写入本地磁盘( 如果为map-only作业,直接写入HDFS)
  1. Reducer Task
  • 从 Map Task的执行结果中,远程读 取输入数据,对数据进行排序,将数据按照分组传递 给用户编写的 reduce函数执行

5)Yarn结构

在这里插入图片描述
角色和概念:
Yarn是 Hadoop的一个通用的资源管理系统

角色: Resourcemanager / Nodemanager / ApplicationMaster / Container / Client

  1. ResourceManager
  • 处理客户端请求
  • 启动/监控Application Master
  • 监控NodeManager
  • 资源分配与调度
  1. Nodemanager
  • 单个节点上的资源管理
  • 处理来自 ResourceManager的命令
  • 处理来自 Application Master的命令
  1. Container
  • 对任务运行行环境的抽象,封装了CPU、内存等
  • 多维资源以及环境变量、启动命令等任务运行相关的信息资源分配与调度
  1. ApplicationMaster
  • 数据切分
  • 为应用程序申请资源,并分配给内部任务
  • 任务监控与容错
  1. Client
  • 用户与Yarn交互的客户端程序
  • 提交应用程序、监控应用程序状态,杀死应用程序等

Yarn的核心思想:
将JobTracker和TaskTacker进行分离,它由下面几大构成组件

ResourceManager一个全局的资源管理器
NodeManager每个节点(RM)代理
ApplicationMaster表示每个应用
每一个ApplicationMaster有多个Container在NodeManager上运行

Hadoop安装

Hadoop的部署模式由三种:

  • 单机
  • 伪分布式
  • 完全分布式

1)单机部署

主机配置要求2vCPU,2G内存

vim /etc/hosts  #配置主机名解析
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
tar -xf hadoop-2.7.7.tar.gz
mv hadoop-2.7.7 /usr/local/hadoop
[root@hadoop ~] rpm -ql java-1.8.0-openjdk    #查看openjdk安装路径
[root@hadoop ~] cd /usr/local/hadoop/
[root@hadoop hadoop] vim etc/hadoop/hadoop-env.sh
 25 export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre"  #openjdk安装路径
 33 export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"  #hadoop配置文件路径
[root@hadoop hadoop] ./bin/hadoop version   #查看版本信息
[root@hadoop hadoop] mkdir aa
[root@hadoop hadoop] cp *.txt aa/
[root@hadoop hadoop] ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount aa bb  
# 使用统计词频功能统计aa目录下的文件中每个单词出现次数,将统计结果保存到bb目录下
[root@hadoop hadoop] cat bb/*

伪分布式:

  • 伪分布式的安装和完全分布式类似,区别是所有角色安装在一台机器上,使用本地磁盘,一般生产环境都会使用完全分布式,伪分布式一般是用来学习和测试Hadoop的功能
  • 伪分布式的配置和完全分布式配置类似

2)HDFS分布式

系统规划(配置要求:2vCPU/2G内存)

主机名作用ip
nn1NameNode/Secondary NameNode192.168.1.60
node1DataNode1192.168.1.61
node2DataNode2192.168.1.62
node3DataNode3192.168.1.63
  • 禁用selinux
  • 卸载firewalld
  • 所有主机同步配置主机名解析
  • 安装openjdk和openjdk-devel
  • NameNode对所有主机做ssh密钥对登录,关闭check选项(防止询问yes/no)
  • 练习用的playbook
1.部署HDFS
  • 修改配置文件,保证所有主机配置相同
作用文件名
环境配置文件hadoop-env.sh
核心配置文件core-site.xml
HDFS配置文件hdfs-site.xml
节点配置文件slaves

编辑配置文件时可使用模板:

  <property>
    <name></name>
    <value></value>
    <description></description>  
  </property>

使用ansible同步配置文件:

] vim hadoop-env.sh
 25 export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre"  #openjdk安装路径
 33 export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"  #hadoop配置文件路径
] vim core-site.xml  #可查看官方文档
<configuration>
  <property>
    <name>fs.defaultFS</name>  #指定使用的文件系统
    <value>hdfs://nn1:9000</value>
    <description>use file system</description>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>  #所有数据的根目录
    <value>/var/hadoop</value>
    <description>documentroot</description>
  </property>
] vim hdfs-site.xml
<configuration>
  <property>
    <name>dfs.namenode.http-address</name>  #NameNode的ip和端口
    <value>nn1:50070</value>
    <description>namenode_http</description>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>   #secNameNode的ip和端口
    <value>nn1:50090</value>
    <description>secondary_http</description>
  </property>
  <property>
    <name>dfs.replication</name>    #备份数量
    <value>2</value>
    <description>backup quantity</description>
  </property>
</configuration>
] vim slaves   #DataNode节点主机名,注意和/etc/hosts中对应
node1
node2
node3
] ansible-playbook hadoop.yml -t sync_conf
  • 初始化集群并启动服务
[root@nn1 ~] mkdir /var/hadoop    #创建目录
[root@nn1 ~] cd /usr/local/hadoop/     
[root@nn1 hadoop] ./bin/hdfs namenode -format   #初始化集群
[root@nn1 hadoop] ./sbin/start-dfs.sh    #启动服务
[root@nn1 hadoop] ./sbin/stop-dfs.sh    #停止服务
  • 验证集群
] jps   #角色验证,所有主机都执行
] /usr/local/hadoop/bin/hdfs dfsadmin -report    #节点验证,只在NameNode上执行
2.部署mapreduce和yarn
] cp mapred-site.xml.template mapred-site.xml
] vim mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>   #分布式计算框架使用模式,只有local和yarn两种
        <value>yarn</value>
    </property>
</configuration>
] vim yarn-site.xml
<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>  #resourcemanager地址
    <value>nn1</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>  #nodemanager使用的计算框架
    <value>mapreduce_shuffle</value>
  </property>
</configuration>
] ansible-playbook hadoop.yml -t sync_conf  #所有主机同步配置文件
3.启动yarn
[root@nn1 ~] cd /usr/local/hadoop
[root@nn1 hadoop] ls sbin/
start-dfs.sh   start-yarn.sh    start-all.sh
# 三个命令分别为启动hdfs集群,启动yarn,启动hdfs和yarn,有对应的stop命令
[root@nn1 hadoop] ./sbin/start-yarn.sh
  • 验证:
jps    #验证角色
./bin/yarn node -list   #验证节点
4.通过浏览器访问
http://namenode:50070
http://secondarynamenode:50090
http://resourcemanager:8088
http://datanode:50075
http://nodemanager:8042

HDFS基本使用

  • 绝大多数命令与shell相同
[root@nn1 hadoop] ./bin/hadoop fs -    #查看帮助
[root@nn1 hadoop] ./bin/hadoop fs -mkdir /abc   #创建文件夹
[root@nn1 hadoop] ./bin/hadoop fs -put *.txt /abc   #将当前目录下的.txt文件上传到hadoop集群的/abc文件夹下
[root@nn1 hadoop] ./bin/hadoop fs -ls /abc  #查看集群/abc目录
Found 3 items
-rw-r--r--   2 root supergroup      86424 2020-02-26 10:39 /abc/LICENSE.txt
-rw-r--r--   2 root supergroup      14978 2020-02-26 10:39 /abc/NOTICE.txt
-rw-r--r--   2 root supergroup       1366 2020-02-26 10:39 /abc/README.txt
[root@nn1 hadoop] ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /abc /cba  #提交分析作业,与单机时命令相同
[root@nn1 hadoop] ./bin/hadoop fs -cat /cba/*   #查看结果
[root@nn1 hadoop] ./bin/hadoop fs -touchz /file1  #在集群中创建文件file1,与shell命令不同
[root@nn1 hadoop] ./bin/hadoop fs -get /file1   #将集群中的/file1文件下载到本地
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值