文章较长,附目录,此次安装是在VM虚拟环境下举行。文章第一节主要是介绍Hadoop与Hadoop生态圈并了解Hadoop三种集群的区别,第二节和各人一起下载,设置Linux三种集群以及大数据相干所需的jdk,zookeeper,只需安装设置的朋侪可以直接跳到文章第二节。同时,希望我的文章能资助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。
目录
一、了解Hadoop
Hadoop
什么是Hadoop
Hadoop的历史
Hadoop的特点
Hadoop的生态体系
1.HDFS
2.MapReduce
3.YARN
4.Hive
5.HBase
6.Oozie
7.Mahout
8.spark
9.Flink
10.zookeeper
二、下载安装包
jdk官网下载地点
Hadoop官网下载地点
zookeeper官网下载地点
三、Hadoop集群搭建
一、伪分布式搭建
二、完全分布式搭建
三、高可用搭建+zookeeper
拓展、Hadoop 与 HPCC的区别
一、了解Hadoop
Hadoop
什么是Hadoop
Hadoop官网介绍
Hadoop是一个由Apache基金会所开发的分布式体系基础架构,是一个开源的框架,用于编写和运行分布式应用以处理大规模数据。它最初是从Nutch项目中分离出来的,专门负责分布式存储以及分布式运算。Hadoop的核心主要包含HDFS(Hadoop Distributed File System,分布式文件体系)和MapReduce(分布式数据处理模子)。
HDFS用于分布式存储海量数据,而MapReduce则用于数据的分布式处理,其本质是并行处理。Hadoop的数据来源可以是恣意类型的,它在处理半结构化和非结构化数据时与关系型数据库相比有更好的性能和灵活性。任何类型的数据最终都会转化成key/value的形式,这是Hadoop的根本数据单位。
Hadoop专为离线和大规模数据分析而设计,并不得当对少量记录举行随机在线处理的模式。在实际应用中,Hadoop常被用于日志分析等使命,还可以与Hive等工具配合使用以进一步提拔数据处理本领。
总的来说,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台,用户可以在不了解分布式底层细节的情况下,开发分布式步调。
Hadoop的历史
Hadoop的历史
Hadoop开端于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一 [2]。2004年,Google在“操作体系设计与实现”(Operating System Design and Implementation,OSDI)聚会会议上公开发表了题为MapReduce:Simplified Data Processing on Large Clusters(Mapreduce:简化大规模集群上的数据处理)的论文之后,受到启发的Doug Cutting等人开始尝试实现MapReduce盘算框架,并将它与NDFS(Nutch Distributed File System)结合,用以支持Nutch引擎的主要算法 [2]。由于NDFS和MapReduce在Nutch引擎中有着精良的应用,以是它们于2006年2月被分离出来,成为一套完备而独立的软件,并被定名为Hadoop。到了2008年年初,hadoop已成为Apache的顶级项目,包含浩繁子项目,被应用到包括Yahoo在内的很多互联网公司
Hadoop的特点
Hadoop的特点
- 高可靠性:Hadoop采用分布式存储,将数据备份多份并分发至不同的机器举行保存,避免了因机器宕机导致的数据丢失,从而保证了数据的安全性和可靠性。即使Hadoop的某个盘算元素或存储出现故障,也不会导致数据丢失。
- 高扩展性:Hadoop是一个高度可扩展的体系,可以在集群间分配使命数据,方便地扩展到数以千计的节点。当现有集群的资源不足以完成数据处理和分析使命时,可以通过快速扩充集群规模举行扩容,从而加强集群的运算本领。
- 高效性:Hadoop采用MapReduce编程模子,可以或许并行工作,以加快使命处理速率。它可以或许在节点之间动态地移动数据,并保证各个节点的动态均衡,因此处理速率非常快。相比传统的单台机器处理数据,Hadoop的效率得到了极大的提拔。
- 高容错性:Hadoop可以或许自动保存数据的多个副本,当某个节点宕机时,它可以自动地将副本复制给其他机器,保证数据的完备性。同时,Hadoop可以或许自动将失败的使命重新分配,确保使命的顺遂完成。
- 低成本:Hadoop可以运行在廉价的机器上,集群可以将步调并发处理,从而降低成本,进步效率,是处理海量数据的最佳选择。
Hadoop的生态体系
Hadoop的生态体系
Hadoop生态体系是大数据的核心,同时,Hadoop也是大量工具的合集。它们一起协同完成特定的使命,构成Hadoop的生态圈,在这里,我要讲的是Hadoop生态体系的版本为2.X,如上图所示。
1.HDFS
HDFS是Hadoop生态体系的核心构成部分之一,它是一个分布式文件体系,用于存储和管理大规模数据集。HDFS的设计目标是提供高吞吐量的数据访问,得当处理超大规模数据集。它通过将数据分块并分布在集群中的多个节点上来实现数据的分布式存储,同时提供数据复制和容错机制以确保数据的安全性和可靠性。
2.MapReduce
MapReduce是Hadoop的另一个核心组件,它是一种编程模子和实行环境,用于处理和分析大规模数据集。MapReduce将复杂的数据处理使命分解为两个主要阶段:Map阶段和Reduce阶段。在Map阶段,体系将数据划分为多个子集,并在集群中的节点上并行处理这些子集。在Reduce阶段,体系对Map阶段的效果举行汇总和合并,生成最终的处理效果。这种并行处理的方式大大进步了数据处理的速率和效率。
3.YARN
YARN是Hadoop 2.0中引入的一个新的资源管理体系,它负责集群资源的调度和管理。YARN将资源管理和应用步调管理分离,使得Hadoop集群可以或许同时运行多种类型的应用步调。YARN通过引入一个全局的资源管理器(ResourceManager)和多个节点管理器(NodeManager)来实现对集群资源的统一管理和调度。ResourceManager负责接收来自应用步调的使命请求,并根据集群的资源状况举行使命调度和分配。NodeManager则负责在节点上启动和管理使命实行容器(Container),确保使命可以或许顺遂实行。
4.Hive
Hive是一个构建在Hadoop上的数据仓库工具,它提供了雷同SQL的查询语言HQL,使得用户可以或许方便地举行数据分析和查询。Hive将结构化数据存储在HDFS中,并通过MapReduce举行盘算。它使得数据分析和处理变得更加简单和直观,尤其得当那些熟悉SQL但不熟悉Java编程的数据分析师和数据科学家。
5.HBase
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储体系,它运行在HDFS上,提供了高可靠性、高性能、列存储、可伸缩、实时读写等特性。HBase使用Hadoop的HDFS作为其底层的存储支持,使用Hadoop的MapReduce来处理HBase中的海量数据,从而提供高并发读写服务的本领。
此外,Hadoop生态体系还不断扩展和演进,新的工具和组件不断涌现,以满意不同范畴和场景的需求。这些工具和组件的协同工作,使得Hadoop生态体系成为了一个强大而灵活的平台,可以或许处理和分析各种规模的数据集,为数据驱动的业务决议提供了有力的支持。
总的来说,Hadoop的生态体系是一个巨大而复杂的集合,它提供了丰富的功能和工具,使得用户可以轻松地构建和部署分布式应用步调,以处理和分析大规模数据。随着技术的不断发展,Hadoop生态体系将继承扩展和美满,为更多范畴和场景提供强大的数据处理和分析本领。
6.Oozie
Oozie是一个Java Web应用步调,运行在Java Servlet容器中,用于管理Hadoop作业的工作流。它使用数据库来存储工作流定义以及当前运行的工作流实例的状态和变量。Oozie工作流是通过放置在控制依赖DAG中的一组动作来定义的,这些动作包括Hadoop的Map/Reduce作业、Pig作业等,并指定了它们实行的次序。
7.Mahout
在Hadoop生态圈中,Mahout起到了提供可扩展机器学习算法实现的紧张作用。它资助开发人员更加方便快捷地创建智能应用步调,通过使用Hadoop的分布式盘算框架,Mahout将原来运行于单机上的机器学习算法转化为了MapReduce模式,从而提拔了算法可处理的数据量和处理性能。这使得Mahout可以或许有效地扩展到云中,使用云盘算的上风举行大规模数据处理和分析。
8.spark
在Hadoop的生态圈中,Apache Spark担当着至关紧张的脚色。作为一个快速、通用的大规模数据处理引擎,Spark增补并扩展了Hadoop的本领,为用户提供了更为强大和灵活的数据处理工具。
9.Flink
Apache Flink是一个开源的流处理框架,其核心是一个用Java和Scala编写的分布式流数据流引擎,以对无界和有界数据流举行有状态盘算。Flink被设计在所有常见的集群环境中运行,以内存实行速率和恣意规模来实行盘算。
Flink的出现代表了数据处理技术的进步。作为第三代大数据引擎(第一代为Hadoop,第二代为Spark),Flink在实时盘算方面有着明显的上风。固然其设计初志是为实时盘算而设计,但由于其盘算引擎的强大,也可以举行离线盘算
10.zookeeper
Zookeeper是一个开源的分布式协调服务,其设计目标是将那些复杂的且容易出错的分布式同等性服务封装起来,构成一个高效可靠的原语集,并以一些简单的接口提供给用户使用。它主要为分布式应用提供协调服务,确保在分布式体系中的各个部分可以或许协同工作。
在Zookeeper中,并没有沿用传统的Master/Slave概念,而是引入了Leader、Follower、Observer三种脚色。其中,Leader是领导者,负责举行投票的发起和决议,更新体系状态;Follower是跟随者,用于接收客户端请求并转发给Leader,在推选过程中到场投票;Observer是观察者,可以接收客户端请求并转发给Leader,但不到场投票过程,通常用于进步读取性能。
二、下载安装包
jdk官网下载地点
这里我选择下载的是一个Linux中的免安装版本,各人可根据本身的需求选择版本,但一定要选择各组件相互兼容的版本。
Hadoop官网下载地点
zookeeper官网下载地点
以上安装包,选择本身需要的版本下载即可
三、Hadoop集群搭建
我使用的主机、从机名称分别为BigData01,BigData02,BigData03,Jdk版本为jdk-8u171, Hadoop版本为hadoop-2.7.5,zookeeper版本为zookeeper-3.4.5,解压到opt下,如有主机从 机名称,ip,版本,路径与我不同等的,更改成本身的即可。zookeeper我会在高可用中设置, 其他两种直接套即可。
- #将下载的压缩包上传到Downloads中并解压到opt下
- tar -zxvf /root/Downloads/hadoop-2.7.5.tar.gz -C /opt/
- tar -zxvf /root/Downloads/jdk-8u171-linux-x64.tar.gz -C /opt/
- vim /etc/profile
- #在配置文件结尾添加以下内容
- export JAVA_HOME=/opt/jdk1.8.0_171
- export HADOOP_HOME=/opt/hadoop-2.7.5
- export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- #刷新配置文件
- source /etc/profile
- #查看java jdk、hadoop是否可用
- java -version
- hadoop version
复制代码 先将主机关机,克隆两个从机(右击主机虚拟机 > 管理 > 克隆)
- vim /etc/hosts
- #配置hosts文件,删除原有内容,添加主机从机名称和ip地址(ifconfig查看)
- 192.168.67.128 BigData01
- 192.168.67.129 BigData02
- 192.168.67.130 BigData03
- scp /etc/hosts/ root@BigData02:/etc
- scp /etc/hosts/ root@BigData03:/etc
- #配置ssh免密登录
- ssh-keygen -t rsa
- cd ~/.ssh/
- cat ./id_rsa.pub >> ./authorized_keys
- scp ./authorized_keys root@BigData02:/.ssh
- scp ./authorized_keys root@BigData03:/.ssh
- ssh-copy-id s1的ip
- ssh-copy-id s1的ip
复制代码 自此,选择跟着一搭建就是伪分布式,跟着二搭建就是完全分布式
一、伪分布式搭建
-
- vim /opt/hadoop-2.7.5/etc/hadoop/hadoop-env.sh
- #在文件结尾添加下面代码
- export JAVA_HOME=/opt/jdk1.8.0_171
-
- vim /opt/hadoop-2.7.5/etc/hadoop/core-site.xml
- #在<configuration></configuration>里添加下面代码
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://BigData01:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/opt/hadoop-2.7.5/tmp</value>
- </property>
- vim /opt/hadoop-2.7.5/etc/hadoop/hdfs-site.xml
- #在<configuration></configuration>里添加下面代码
- <property>
- <name>ds.replication</name>
- <value>1</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/opt/hadoop-2.7.5/tmp/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/opt/hadoop-2.7.5/tmp/dfs/data</value>
- </property>
- cd /opt/hadoop-2.7.5/sbin
- hdfs namenode -format
- ./start-all.sh
- jps
- #主机出现NameNode,Datanode即成功
复制代码
二、完全分布式搭建
- vim /opt/hadoopHA/etc/hadoop/hadoop-env.sh
- #在文件末尾添加下面代码
- export JAVA_HOME=/opt/jdk1.8.0_171
- vim /opt/hadoop-2.7.5/etc/hadoop/core-site.xml
- #在<configuration></configuration>里添加下面代码
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://BigData01:9000</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/opt/hadoop-2.7.5/tmp</value>
- </property>
- vim /opt/hadoop-2.7.5/etc/hadoop/hdfs-site.xml
- #在<configuration></configuration>里添加下面代码
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/opt/hadoop-2.7.5/tmp/dfs/name</value>
- </property>
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/opt/hadoop-2.7.5/tmp/dfs/data</value>
- </property>
- vim /opt/hadoop-2.7.5/etc/hadoop/yarn-site.xml
- #在<configuration></configuration>里添加下面代码
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>BigData01</value>
- </property>
- cd /opt/hadoop-2.7.5/etc/hadoop
- cp mapred-site.xml.template mapred-site.xml
- vim /opt/hadoop-2.7.5/etc/hadoop/mapred-site.xml
- #在<configuration></configuration>里添加下面代码
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- scp -r /opt/hadoop-2.7.5/ root@BigData02:/opt/
- 输入 yes
- scp -r /opt/hadoop-2.7.5/ root@BigData03:/opt/
- 输入 yes
- cd /opt/hadoop-2.7.5/sbin
- hdfs namenode -format
- start-all.sh
- #三个节点分别jps
- jps
- #主机上出现NodeManager、NameNode、ResourceManager、DataNode
- 从机1出现NodeManager、SecondaryNameNode、DataNode
- 从机2出现DataNode、NodeManager
- 即配置成功
复制代码
三、高可用搭建+zookeeper
拓展、Hadoop 与 HPCC的区别
- 架构与中央件:
- Hadoop是一个开源的分布式盘算平台,其核心组件包括HDFS(分布式文件体系)和MapReduce(编程模子)。它通常通过命令行或API与应用步调举行交互。
- HPCC则提供了更为丰富的中央件,包括ECL代码仓库、ECL服务器、ESP服务器(提供认证、日志记录等功能)以及Dali服务器(用作存储使命工作单位信息和为分布式文件体系提供名字服务)等。这些中央件为HPCC提供了更多的灵活性和功能。
- 扩展性:
- Hadoop在理论上可以扩展到数千个节点,但在实际部署中,随着集群规模的增大,管理和维护的复杂性也会增加。
- HPCC被设计为可以灵活地运行在一个到几千个节点上,并且在实际应用中,较小的节点数量就可以提供与Hadoop集群相当的处理性能。然而,集群的大小可能取决于分布式文件体系的团体存储需求。
- 性能:
- 在基准测试中,HPCC在某些场景下表现出比Hadoop更高的性能。例如,在排序基准测试中,HPCC平台在高性能的400个节点体系上102秒内对1TB的数据完成排序,而相同硬件设置下的Hadoop则需要25分钟28秒。
- 然而,性能的比力也取决于具体的使命、数据分布以及硬件设置等因素,因此在实际应用中可能会有所不同。
- 生态体系与集成:
- Hadoop拥有巨大的生态体系和丰富的工具集,包括Hive(数据仓库工具)、Pig(数据流语言)、HBase(分布式数据库)等,使得用户可以方便地举行各种数据处理和分析使命。
- HPCC也提供了一套工具和接口,用于管理和监视其设置和环境。然而,与Hadoop相比,其生态体系可能相对较小,工具和集成选项可能有限。
- 社区与支持:
- Hadoop作为开源项目标代表,拥有巨大的社区和广泛的行业支持。这使得Hadoop在标题解决、功能更新和文档美满等方面通常可以或许得到实时的相应。
- HPCC的社区规模和支持情况可能因具体产品而异。在选择平台时,了解社区的活跃度和支持力度黑白常紧张的。
Hadoop的上风:
- 广泛的行业认可和应用:Hadoop已经在多个行业得到了广泛的应用,包括金融、电商、医疗、科研等。浩繁企业已经乐成地将Hadoop集成到他们的数据分析和处理流程中,并取得了明显的成果。这种广泛的行业认可和应用进一步推动了Hadoop的普及和发展。
- 可扩展性和灵活性:Hadoop的分布式架构使其可以或许处理大规模的数据集,并且具有精良的可扩展性。无论是处理结构化、半结构化还黑白结构化数据,Hadoop都能提供高效的解决方案。同时,Hadoop的灵活性也使得它可以或许适应不同的业务场景和需求。
- 成本效益:Hadoop是一个开源项目,可以免费使用和修改。这使得企业可以或许以较低的成本构建和维护大数据处理平台。此外,Hadoop的硬件要求相对较低,可以使用平常的商用硬件举行部署,进一步降低了企业的成本负担。
总结:固然Hadoop比HPCC来说,有强大的生态体系、广泛的行业认可、可扩展性和灵活性以及成本效益等方面的上风,但选择得当的大数据处理和分析工具时,应根据具体的需求、数据规模、处理速率要求以及资源限定等因素举行综合考虑。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |