要说大数据中的大佬,那就非Hadoop莫属,而Hadoop是一比较庞大的体系,牵扯很多,下来就看一下吧
一、概念
- Hadoop是apache旗下的一套开源软件平台,相当于一个中间件;单独部署的服务器集群;
- Hadoop提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理;
- Hadoop的核心组件有
- HDFS:分布式文件系统(Hadoop Distributed File System):管理分布到集群节点的文件;
- 什么是分布式系统?据我目前的理解就是能够并行运行的系统?和集群有什么差距?
- 为什么要分布式?分布式系统最主要解决的就是(超)大数据量的情况下中心化单机硬件资源的局限性和运算速度的局限性以及安全性问题;
- YARN:运算资源调度集群系统(Yet Another Resource Negotiator);
- MapReduce:分布式运算编程框架,运行在YARN集群的节点上;
- HDFS:分布式文件系统(Hadoop Distributed File System):管理分布到集群节点的文件;
- Hadoop在大数据、云计算中的位置和关系
-
云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合发展的产物。借助IaaS(Infrastructure-as-a-service:基础设施即服务)、PaaS(Platform-as-a-service:平台即服务)、SaaS(Software-as-a-service:软件即服务)等业务模式,把强大的计算能力提供给终端用户。
IaaS PaaS SaaS(http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html)
三个阶段与软件开发的关系(http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html) -
现阶段,云计算的两大底层支撑技术为"虚拟化"和"大数据技术",而Hadoop则是云计算的PaaS层的解决方案之一,并不等同于PaaS,更不等同于云计算本身;即Hadoop是一个平台,也可以说是一个生态圈。
-
二、Hadoop应用场景
- Hadoop应用于数据服务基础平台建设;
- Hadoop用于用户画像;
- Hadoop用于网站点击流日志数据挖掘;
- ……
三、Hadoop生态圈以及各组成部分
-
Hadoop生态系统图谱☺
hadoop ecosystem map - 各个组成部分的介绍
- Hadoop ~ HDFS:Hadoop Distributed File System,Hadoop的分布式文件系统;
- Hadoop ~ MapReduce:Hadoop的数据输出力框架;
- flume、Scribe:数据采集框架;
- ZooKeeper:分布式协调服务基础组件;
- Mahout:基于MapReduce/spark/flink等分布式运算框架的机器学习算法库;
- Sqoop:数据导入导出工具;
- KarmaSphere:直接访问和分析Hadoop里面结构化和非结构化数据的工具;
- Hive:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具;
- HBase:分布式海量数据库,离线分析和在线业务通吃
- Oozie:工作流调度框架;
- HBase:基于Hadoop的分布式海量数据库;
四、分布式系统
- 由于大数据技术领域的各类技术框架基本上都是分布式系统,因此理解Hadoop平台的各个技术框架,基本的分布式系统概念就显得非常必要;
- 分布式软件系统(Distributed Software Systems)
- 利用多个节点共同协作完成一项或多项具体业务功能的系统;
- 把软件系统会划分成多个子系统或模块,各自运行在不同的机器上,子系统或子模块之间通过网络通信进行协作,实现最终的整体功能;
- 从本质上讲,分布式系统的每个节点都是一个SocketServer;
五、大数据数据处理的分类
- 一般情况下,我们根据数据处理的实时性把大数据分类分为:
- 离线数据分析;
- 实时数据分析;
- 在后面的章节中,我们分别介绍两种数据分析;
六、Hadoop的安装
- 环境准备
- 安装JDK并配置环境变量;
- 下载安装
- 在官网下载Hadoop的最新稳定版,这里是Hadoop 2.9.1;
- 解压到安装目录
- 配置Hadoop
- Hadoop-env.sh
# The java implementation to use. export JAVA_HOME=/home/hdp1/programs/jdk1.7.0_51
- core-site.xml
<configuration> # 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 <property> <name>fs.defaultFS</name> <value>hdfs://hdp1:9000</value> </property> # 指定hadoop运行时产生文件的存储目录 <property> <name>Hadoop.tmp.dir</name> <value>/home/<hostname>/apps/Hadoop-2.6.1/tmp</value> </property> </configuration>
- hdfs-site.xml (可以不用配置,都有默认值)
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/<hostname>/data/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/<hostname>/data/data</value> </property> # 指定HDFS副本的数量 <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.secondary.http.address</name> <value>hdp-node-01:50090</value> </property> </configuration>
- mapred-site.xml
<configuration> # MapReduce运行的平台名称 <property> <name>mapmeduce.framework.name</name> <value>yarn</value> </property> </configuration>
- yarn-site.xml
<configuration> #resourcemanager <property> <name>yarn.resourcemanager.hostname</name> <value>Hadoop01</value> </property> # reduce获取数据的方式 <property> <name>yarn.nodemanager.aux-services</name> <value>MapReduce_shuffle</value> </property> </configuration>
- 配置Hadoop的黄精变量,有两个目录,一个是bin目录,另外一个是sbin目录
- salves,为了一键启动,逐个启动用不到
hdp1 hdp2 hdp3
- Hadoop-env.sh
- 启动集群
- 初始化了HDFS的NameNode的工作目录(DataNode在启动后会自行初始化)
<HADOOP_HOME>/bin/hadoop namenode -format
- 启动HDFS
<HADOOP_HOME>/sbin/start-dfs.sh
- 启动YARN
<HADOOP_HOME>/sbin/start-dfs.sh
- NameNode和DataNode的单独启动
<HADOOP_HOME>/sbin/hadoop-daemon.sh start namenode/datanode
- 初始化了HDFS的NameNode的工作目录(DataNode在启动后会自行初始化)
- 测试启动是否成功:在Hadoop中内嵌了一个jetty的服务器,用来通过页面直观展示数据,端口:50070
网友评论