欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Hadoop介绍与安装

程序员文章站 2022-05-18 15:37:16
最近想学习下大数据,有点急于求成,于是去网上找了各种培训机构的视频,发现大都质量不佳,理论基本不说或者简单讲下,然后教你照猫画虎的敲代码,出了问题都没法分析。最后还是找了厦门大学的公开课从理论开始稳扎稳打的学习了。 ......

Hadoop介绍与安装

前言

最近想学习下大数据,有点急于求成,于是去网上找了各种培训机构的视频,发现大都质量不佳,理论基本不说或者简单讲下,然后教你照猫画虎的敲代码,出了问题都没法分析。最后还是找了厦门大学的公开课从理论开始稳扎稳打的学习了。

一 hadoop起源

hadoop的理论起源主要来自谷歌公司的三大论文,并迅速应用于全球各大互联网公司。因此,学习大数据hadoop是绕不开的一个知识点。今年来,大数据的兴起其实来自于计算机技术的发展,物联网技术产生了大量的数据,云技术使得计算机存储与运算资源更加普及,因此大数据技术应运而出,用以解决大量数据的存储与计算的问题。

二 hadoop生态圈

学习hadoop,需要知道hadoop生态圈中各个项目的功能与作用,为何要用开发这种新项目,而不使用已有项目实现这种功能。

2.1 hdfs

hadoop的底层文件系统,与传统文件系统不同在于它是分布式的。同时与已有的分布式文件系统相比,它又有着旧分布式文件系统没有的优点。如:高可用性,高可靠性,吞吐量大,能使用廉价服务器构建,可通过不断增加机器数来进行拓展。具体实现在hdfs文章中记录。

2.2 hbase

构建在hdfs之上的分布式数据库系统。是一种基于列的nosql数据库,从另一个角度看也能看成键值对的nosql数据库。与传统关系型数据库相比,最大的优势在于可通过增加机器进行横向扩展,并且能使用廉价服务器。

2.3 hive

一种分布式数据仓库,可以导入外部数据后用类sql语言进行操作。一般用于历史数据的查询与分析。与hbase不同,hbase常用于实时的交互式查询。

2.4 mapruduce

一种分布式计算框架,mapruce本来就是一种计算模型的名称。核心思想是“分而治之”,能将计算分解成多个小计算,由多个机器同时计算。适合离线批处理。

2.5 storm

一种流式计算框架,mapruce适合批处理,无法完成流式数据的处理,因此开发出流式处理框架。

2.6 常见大数据处理需求

  • 离线批处理,特点:使用历史数据,大批量的处理,要求吞吐率。
  • 实时交互式处理,特点:用户交互使用,要求反映速度在秒级到数分钟之间。
  • 流式数据处理,特点:数据以流的形式输入,要求毫秒级的处理速度,且处理后的数据大部分都不用储存。

2.7 hadoop组件关系

基本的关系就是,底层用hdfs存储,之上是核心计算框架mapruduce。而hive,hbase,pig等等组件一般都是将自身的操作转化成mapreduce代码然后通过mapreduce进行计算实现功能。同时与mapruduce框架同一层次的storm解决了流式数据的处理。hbase虽然是使用mapreduce框架进行处理,但是基本也能实现实时交互式处理的要求。(也正是mapreduce存在种种问题,spark渐渐兴起,虽然mapreduce也做了各种优化,但是在某些领域相比spark还是有些差距)。

三 hadoop安装

  1. 准备。同一局域网的linux服务器数台,我是用我的游戏本同时开了3个虚拟机代替的。

  2. linux里创建hadoop用户,专门负责hadoop项目,便于管理与权限划分。

  3. 安装jdk,下载hadoop时官方会指明jdk版本需求,设置jdk环境变量

  4. 安装ssh并设置免密登录。因为hdfs的namenode与其他datenode等节点的通讯与管理就是基于ssh协议的。并且将要使用的机器域名写入hosts文件,方便命名。

  5. 去官网下载并解压hadoop。修改hadoop配置文件,位于hadoop/etc/hadoop /下面,分别有:
  • slaves。写入datenode的机器,因为之前修改了域名解析文件,可以直接写域名,不用写ip了。
  • core-site.xml。hadoop的核心配置文件
    fs.defaultfs,默认文件系统的主机和端口,这里的文件系统就是hdfs。
    hadoop.tmp.dir hadoop的临时文件路径,不设置则会使用系统临时文件路径,系统重启后就丢失了。
<configuration>
       <property>
               <name>fs.defaultfs</name>
               <value>hdfs://master:9000</value>
       </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/usr/local/hadoop/tmp</value>
               <description>abase for other temporary directories.</description>
       </property>
</configuration>
  • hdfs-site.xml。hdfs的配置文件
    dfs.namenode.secondary.http-address。secondnamenode的机器和端口
    dfs.replication。hdfs系统保存的文件副本数。
    dfs.namenode.name.dir,dfs.datanode.data.dir。namenode和datanode数据在原本文件系统中的存放位置。
   <configuration>
       <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>master:50090</value>
       </property>
       <property>
               <name>dfs.replication</name>
               <value>1</value>
       </property>
       <property>
               <name>dfs.namenode.name.dir</name>
               <value>file:/usr/local/hadoop/tmp/dfs/name</value>
       </property>
       <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/usr/local/hadoop/tmp/dfs/data</value>
       </property>
</configuration>
  • mapred-site.xml。mapreuce的配置文件
    mapreduce.framework.name。mapreuce的资源管理系统。这个选yarn,原本是mapreuce自己进行分布式计算时的资源管理,后来发现效率不足便分割开来重新开发了一套框架。
    mapreduce.jobhistory.address。mapreuce的任务日志系统,指定机器和端口。
    mapreduce.jobhistory.webapp.address。任务日志系统web页面所使用的机器和端口,通过这个可以在web页面中查看任务日志系统。
<configuration>
       <property>
               <name>mapreduce.framework.name</name>
               <value>yarn</value>
       </property>
       <property>
               <name>mapreduce.jobhistory.address</name>
               <value>master:10020</value>
       </property>
       <property>
               <name>mapreduce.jobhistory.webapp.address</name>
               <value>master:19888</value>
       </property>
</configuration>
  • yarn-site.xml。yarn的配置文件
    yarn.resourcemanager.hostname。yarn的resourcemanager所使用的机器。这个负责进行全局的资源分配,管理。
    yarn.nodemanager.aux-services。可以自定义一些服务,比如mapreuce的shuffle就是用这个配置的。目前我们使用填shuffle就行了。
<configuration>
       <property>
               <name>yarn.resourcemanager.hostname</name>
               <value>master</value>
       </property>
       <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
       </property>
</configuration>
  1. 配置好以后将hadoop文件从主节点复制到各个从节点,hadoop的hadfs与mapreduce就安装完成了。(centos系统需要关闭相应防火墙)

四 hadoop生态圈其他组件安装

看看网友博客和官方文档差不多就会了,基本一个形式。下载解压-配置环境变量-配置组件的配置文件,基本都是xxxx-env.sh,xxx-site.sh,xxx-core.sh,slave,work这种,在里面按照需求配置参数就好了,具体参数意思和必须要配置的参数看看官方文档也就懂了(滑稽)。