Hadoop基础知识

hadoop基本介绍

1、Hadoop是一个有apache基金会开发的分布式系统基础架构。
2、主要解决,海量数据的存储和海量数据的分析问题
3、hadoop泛指hadoop生态圈

hadoop三大发行版本(免费开源)

1、apache DKhadoop发行版

Apache版本最原始(最基础)的版本。

官网地址:地址
下载地址:地址

Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)
在大型互联网企业中用的较多,在兼容性,安全性,稳定性上相对于hadoop有很大增强。
官网地址:添加链接描述
下载地址:添加链接描述

Hortonworks版本(Hortonworks Data Platform,简称“HDP”)
官网地址:添加链接描述
下载地址:添加链接描述
集成和测试封装 – HDP包括稳定版本的Apache Hadoop的所有关键组件,集成和测试封装。
安装方便– HDP包括一个现代化的,直观的用户界面的安装和配置工具。
管理和监控服务 – HDP包括直观的仪表板,为监测集群和建立警示。
数据集成服务 – HDP包括Talend大数据平台,领先的开源整合工具,轻松连接Hadoop集群,而无需编写Hadoop代码的数据系统集成工具。
元数据服务 – HDP包括的Apache HCatalog,从而简化了Hadoop的应用程序之间和Hadoop和其他数据系统之间的数据共享。
高可用性– HDP与成熟的高可用性解决方案的无缝集成。

2、传统的硬件厂商,华为,Intel也提供hadoop的版本

hadoop的优势

高可靠性:底层维护多个数据副本,如hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
可扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
高效性:在mapreduce的思想下,hadoop是并行工作的,以加快任务处理速度
高容错性:能够地总将失败的任务重新分配

hadoop1与hadoop2有什么区别

hadoop1:

Mapreduce:负责计算+资源调度

主要由两部分组成:编程模型和运行时环境。
编程模型为用户提供易用的编程接口,用户只需编写串行程序实现函数来实现一个分布式程序,其他如节点间的通信、节点失效,数据切分等,则由运行时环境完成。
基本编程模型将问题抽象成Map和Reduce两个阶段,Map阶段将输入数据解析成key/value,迭代调用map()函数后,再以key/value的形式输出到本地目录;Reduce阶段则将key相同的value进行归约处理,并将最终结果写入到HDFS。
运行时环境由JobTracker和TaskTracker两类服务组成,JobTracker负责资源管理和所有作业的控制,TaskTracker负责接收来自JobTracker的命令并执行。

HDFS:数据存储

在Hadoop1.x中的NameNode只可能有一个,虽然可以通过SecondaryNameNode与NameNode进行数据同步备份,但是总会存在一定的延时,如果NameNode挂掉,但是如果有部份数据还没有同步到SecondaryNameNode上,还是可能会存在着数据丢失的问题。
common:铺助工具

hadoop2:

MapReduce:负责计算
1、MapReduce将计算过程分为两个阶段:Map和Reduce
2、Map阶段并行处理输入数据
3、Reduce阶段对Map结果进行汇总计算
yml:资源调度
1、Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台
2、resourceManager:处理客户端请求、启动、监听applicationMaster、监控nodemanager、资源分配与调度
3、nodeManager:单个节点上的资源管理,处理来自于resourceManager的命令、处理来自于applicationMaster的命令。
4、applicationMagter:数据切分,为应用程序申请资源,并分配给内部任务、任务架空与容错。
 4、container:对任务运行环境的抽象,封装了cpu,内存等多位资源以及环境变量,启动命令等任务相关的信息。
HDFS:数据存储

1
Hadoop建议存储大文件,如果是大量的小文件,会消耗大量内存。
NameNode:
整个文件系统的管理节点,维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。
DataNode:
保存具体的block数据,负责数据的读写操作和复制操作,DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息,DataNode之间会进行通信,复制数据块,保证数据的冗余性.
分块存储 block块:基本存储单位 128M,默认副本3份

common:铺助工具

大数据技术架构图

1、
在这里插入图片描述
2、
在这里插入图片描述

涉及的技术名词解释如下:

1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
2)Flume:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
3)Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
(1)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
(3)支持通过Kafka服务器和消费机集群来分区消息。
(4)支持Hadoop并行数据加载。
4)Storm:Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
5)Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
6)Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
7)Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
8)Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
10)R语言:R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
11)Mahout:Apache Mahout是个可扩展的机器学习和数据挖掘库。
12)ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

hadoop运行环境搭建

环境:linux环境(centOS7)

虚拟机环境准备
  1. 克隆虚拟机
  2. 修改克隆虚拟机的静态IP
  3. 修改主机名
  4. 关闭防火墙
  5. 创建普通用户
  6. 配置普通用户具有root权限
安装JDK

查看是否安装了jdk:rpm -qa | grep java
卸载jdk:sudo rpm -e 软件包
查看jdk安装路径:which java

安装hadoop

查看hadoop:ll
drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 bin
drwxr-xr-x. 3 atguigu atguigu 4096 5月 22 2017 etc
drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 include
drwxr-xr-x. 3 atguigu atguigu 4096 5月 22 2017 lib
drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 libexec
-rw-r–r--. 1 atguigu atguigu 15429 5月 22 2017 LICENSE.txt
-rw-r–r--. 1 atguigu atguigu 101 5月 22 2017 NOTICE.txt
-rw-r–r--. 1 atguigu atguigu 1366 5月 22 2017 README.txt
drwxr-xr-x. 2 atguigu atguigu 4096 5月 22 2017 sbin
drwxr-xr-x. 4 atguigu atguigu 4096 5月 22 2017 share
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

hadoop运行模式

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

本地运行模式

官方案例:

官方Grep案例
  1. 创建在hadoop-2.7.2文件下面创建一个input文件夹
    mkdir input
  2. 将Hadoop的xml配置文件复制到input
    cp etc/hadoop/*.xml input
  3. 执行share目录下的MapReduce程序
    bin/hadoop jar
    share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output ‘dfs[a-z.]+’
  4. 查看输出结果
    cat output/*
官方WordCount案例
  1. 创建在hadoop-2.7.2文件下面创建一个wcinput文件夹
    mkdir wcinput
  2. 在wcinput文件下创建一个wc.input文件
    cd wcinput
    touch wc.input
  3. 编辑wc.input文件
    vi wc.input
    在文件中输入如下内容
    hadoop yarn
    hadoop mapreduce
    atguigu
    atguigu
    保存退出::wq
  4. 回到Hadoop目录/opt/module/hadoop-2.7.2
  5. 执行程序
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
  6. 查看结果
    cat wcoutput/part-r-00000

atguigu 2
hadoop 2
mapreduce 1
yarn 1

伪分布式运行模式

4.2.1 启动HDFS并运行MapReduce程序

  1. 分析
    (1)配置集群
    (2)启动、测试集群增、删、查
    (3)执行WordCount案例
  2. 执行步骤
    (1)配置集群
    (a)配置:hadoop-env.sh
    Linux系统中获取JDK的安装路径:
    echo $JAVA_HOME
    /opt/module/jdk1.8.0_144
    修改JAVA_HOME 路径:
    export JAVA_HOME=/opt/module/jdk1.8.0_144
    (b)配置:core-site.xml
fs.defaultFS hdfs://hadoop101:9000 hadoop.tmp.dir /opt/module/hadoop-2.7.2/data/tmp (c)配置:hdfs-site.xml dfs.replication 1 (2)启动集群 (a)格式化NameNode(第一次启动时格式化,以后就不要总格式化) bin/hdfs namenode -format (b)启动NameNode sbin/hadoop-daemon.sh start namenode (c)启动DataNode sbin/hadoop-daemon.sh start datanode (3)查看集群 (a)查看是否启动成功 jps 13586 NameNode 13668 DataNode 13786 Jps 注意:jps是JDK中的命令,不是Linux命令。不安装JDK不能使用jps (b)web端查看HDFS文件系统 http://hadoop101:50070/dfshealth.html#tab-overview 注意:如果不能查看,看如下帖子处理 http://www.cnblogs.com/zlslch/p/6604189.html (c)查看产生的Log日志 说明:在企业中遇到Bug时,经常根据日志提示信息去分析问题、解决Bug。 当前目录:/opt/module/hadoop-2.7.2/logs ls hadoop-atguigu-datanode-hadoop.atguigu.com.log hadoop-atguigu-datanode-hadoop.atguigu.com.out hadoop-atguigu-namenode-hadoop.atguigu.com.log hadoop-atguigu-namenode-hadoop.atguigu.com.out SecurityAuth-root.audit

cat hadoop-atguigu-datanode-hadoop101.log
(d)思考:为什么不能一直格式化NameNode,格式化NameNode,要注意什么?
cd data/tmp/dfs/name/current/
cat VERSION
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837

[atguigu@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/data/current/
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837

注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
(4)操作集群
(a)在HDFS文件系统上创建一个input文件夹
bin/hdfs dfs -mkdir -p /user/atguigu/input
(b)将测试文件内容上传到文件系统上
bin/hdfs dfs -put wcinput/wc.input
/user/atguigu/input/
(c)查看上传的文件是否正确
bin/hdfs dfs -ls /user/atguigu/input/
bin/hdfs dfs -cat /user/atguigu/ input/wc.input
(d)运行MapReduce程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output
(e)查看输出结果
命令行查看:
bin/hdfs dfs -cat /user/atguigu/output/*
浏览器查看,如图2-34所示

图2-34 查看output文件
(f)将测试文件内容下载到本地
hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/
(g)删除输出结果
hdfs dfs -rm -r /user/atguigu/output
4.2.2 YARN上运行MapReduce 程序

  1. 分析
    (1)配置集群YARN上运行
    (2)启动、测试集群增、删、查
    (3)在YARN上执行WordCount案例
  2. 执行步骤
    (1)配置集群
    (a)配置yarn-env.sh
    配置一下JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_144
    (b)配置yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop101

(c)配置:mapred-env.sh
配置一下JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
(d)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

mapreduce.framework.name yarn
 (2)启动集群
(a)启动前必须保证NameNode和DataNode已经启动
(b)启动ResourceManager
 sbin/yarn-daemon.sh start resourcemanager
	
	(c)启动NodeManager
  sbin/yarn-daemon.sh start nodemanager

(3)集群操作
(a)YARN的浏览器页面查看,如图2-35所示 xxxxx

图2-35 YARN的浏览器页面

	(b)删除文件系统上的output文件
    bin/hdfs dfs -rm -R /user/atguigu/output

	(c)执行MapReduce程序
     bin/hadoop jar
  share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input  /user/atguigu/output
	
	(d)查看运行结果,如图2-36所示
    bin/hdfs dfs -cat /user/atguigu/output/*

图2-36 查看运行结果
4.2.3 配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

  1. 配置mapred-site.xml
    [atguigu@hadoop101 hadoop]$ vi mapred-site.xml
    在该文件里面增加如下配置。

    mapreduce.jobhistory.address
    hadoop101:10020


    mapreduce.jobhistory.webapp.address
    hadoop101:19888
yarn.log.server.url http://hadoop101:19888/jobhistory/logs
  1. 启动历史服务器
    sbin/mr-jobhistory-daemon.sh start historyserver

  2. 查看历史服务器是否启动
    jps

  3. 查看JobHistory
    http://hadoop101:19888/jobhistory

4.2.4 配置日志的聚集
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
开启日志聚集功能具体步骤如下:

1.配置yarn-site.xml
[atguigu@hadoop101 hadoop]$ vi yarn-site.xml

在该文件里面增加如下配置。

<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
yarn.log-aggregation.retain-seconds 604800

2.关闭NodeManager 、ResourceManager和HistoryManager
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/mr-jobhistory-daemon.sh stop historyserver

3.启动NodeManager 、ResourceManager和HistoryManager
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh start historyserver

4.删除HDFS上已经存在的输出文件
bin/hdfs dfs -rm -R /user/atguigu/output

5.执行WordCount程序
hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input /user/atguigu/output

6.查看日志,如图2-37,2-38,2-39所示
http://hadoop101:19888/jobhistory

图2-37 Job History

图2-38 job运行情况

图2-39 查看日志
4.2.5 配置文件说明
Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
(1)默认配置文件:
表2-1
要获取的默认文件 文件存放在Hadoop的jar包中的位置
[core-default.xml] hadoop-common-2.7.2.jar/ core-default.xml
[hdfs-default.xml] hadoop-hdfs-2.7.2.jar/ hdfs-default.xml
[yarn-default.xml] hadoop-yarn-common-2.7.2.jar/ yarn-default.xml
[mapred-default.xml] hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml
(2)自定义配置文件:
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知青先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值