千家信息网

hadoop单机及伪分布式

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,hadoop的基本概念伪分布式hadoop集群安装hdfs、MapReduce演示互联网正在从IT走向DT时代。大数据应用分析1、统计类的分析2、推荐类的分析 3、机器学习(分类,聚类)4、人工
千家信息网最后更新 2024年11月15日hadoop单机及伪分布式
hadoop的基本概念伪分布式hadoop集群安装hdfs、MapReduce演示互联网正在从IT走向DT时代。大数据应用分析1、统计类的分析2、推荐类的分析    3、机器学习(分类,聚类)4、人工智能、预测(算法)

一、什么是hadoop

官网:http://hadoop.apache.orghadoop是apache旗下的一套开源软件平台。是一个可靠的、可扩展的、可分布式计算的开源软件。apache hadoop平台是一个框架,允许使用简单的编程模型。该平台被设计成可以从单个服务器扩展到数千台服务器,每个服务器都提供本地计算和存储。也被设计成可检测和处理应用层的故障(即高可靠、高容错),高可用服务是基于计算机集群的,并且其中每一台计算机都有可能失效。hadoop提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理作者:doug  cuttinghadoop的核心组件:    hadoop common:hadoop工具    hadoop  distributed file system(HDFS):分布式文件系统,解决海量数据的存储    hadoop  YARN:运算资源调度系统,解决资源管理调度    hadoop MapReduce:分布式运算编程框架,解决海量数据的分析模型Hadoop在2.0将资源管理从MapReduce中独立出来变成通用框架后,就从1.0的三层结构演变为了现在的四层架构:        1. 底层--存储层,文件系统HDFS        2. 中间层--资源及数据管理层,YARN以及Sentry等        3. 上层--MapReduce、Impala、Spark等计算引擎        4. 顶层--基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout等等广义上来说,hadoop通常是指一个更广泛的概念--Hadoop生态圈

二、hadoop产生背景

1、hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题--如何解决数十亿网页的存储和索引问题。2、2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。分布式文件系统(GFS),可用于处理海量网页的存储;分布式计算框架MapReduce,可用于处理海量网页的索引计算问题。3、Nutch的开发人员完成了相应的开源实现HDFS和MapReduce,并从Nutch中剥离成为独立项目hadoop,到2008年1月,hadoop成为apache顶级项目,迎来了快速发展期。

三、hadoop在大数据、云计算中的位置和关系

1、云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合发展的产物。借助Iaas(基础设施即服务)、Paas(平台即服务)、Saas(软件即服务)等业务模式,把强大的计算能力提供给终端用户2、现阶段,云计算的底层支撑技术为"虚拟化"和"大数据技术"3、而hadoop则是云计算的Paas层的解决方案之一,并不等同于Paas,更不等同于云计算本身。四、大数据处理业务应用1、大型网站web服务器的日志分析:一个大型网站的web服务器集群 ,每5分钟收录的点击日志高达800GB左右,峰值点击每秒达到900万次,每个5分钟将数据装载到内存中,高速计算网站的热点URL,并将这些信息反馈给前端缓存服务器,以提高缓存命中率。2、运营商流量分析:每天的流量数据在2TB~5TB左右,拷贝到HDFS上,通过交互式分析引擎框架,能运行几百个复杂的数据清洗和报表业务,总时间比类似硬件配置的小型机集群和DB2快2~3倍。3、IPTV收视统计与点播推荐:一个实时收视率统计和点播推荐系统,可以实时收集用户的遥控器操作,提供实时的收视率榜单;并且根据内容推荐和协同过滤算法,实现了点播推荐服务。4、城市交通卡口视频监控信息的实时分析:采用基于流式stream进行全省范围的交通卡口通过视频监控收录的信息进行实时分析、告警和统计(计算实时路况),对全省范围内未年检车辆或×××的分析延时在300毫秒左右,可以做出实时告警。大数据是个复合专业,包括应用开发、软件平台、算法、数据挖掘等,因此,大数据技术领域的就业选择是多样的,但就hadoop而言,通常都需要具备以下技能或知识:1、hadoop分布式集群的平台搭建2、hadoop分布式文件系统HDFS的原理理解及使用3、hadoop分布式运算框架MapReduce的原理理解及编程4、hive数据仓库工具的熟练应用5、flume、sqoop、oozie等辅助工具的熟练使用6、shell、python等脚本语言的开发能力

hadoop对海量数据处理的解决思路:

HDFS的架构:主从结构:主节点:namenode从节点:有很多个datanodenamenode负责:接受用户操作请求存储文件的元数据以及每个文件的块列表和块所在的datanode等维护文件系统的目录结构管理文件与block之间的关系,block与datanode之间关系datanode负责:存储文件在本地文件系统存储文件块数据,以及块数据的校验和文件被分成block存储在磁盘上为保证数据安全,文件会有多个副本secondary  namenode(2nn):用于监控HDFS状态的辅助后台程序,每隔一段时间获取和hdfs元数据的快照。YARN架构:1)ResourceManager(RM)主要作用如下:(1)处理客户端请求(2)监控NodeManager(3)启动或监控ApplicationMaster2)NodeManager(nm)主要作用如下:(1)管理单个节点上的资源(2)处理来自ResourceManager的命令(3)处理来自ApplicationMaster的命令3)ApplicationMaster(AM)作用:(1)辅助数据的切分(2)为应用程序申请资源并分配给内部的任务(3)任务的监控与容错4)ContainerContainer是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。问题:怎么解决海量数据的计算Mapreduce架构:两个程序:Map:局部并行处理输入数据reduce:汇总局部处理的结果,再统计全局hadoop1.x和hadoop2.x版本的区别:安装部署,运维、开发、测试HDFS三大核心:HDFS、MapReduce、YARN四个模块:hadoop  common:为其他hadoop模块提供基础设施hadoop  dfs:一个高可靠、高吞吐量的分布式文件系统hadoop mapreduce:一个分布式的离线并行计算框架hadoop yarn:一个新的mapreduce框架,任务调度和资源管理hadoop安装:

Hadoop三种安装模式

1.Hadoop单机模式单机模式是Hadoop默认的安装模式,这种安装模式主要就是并不配置更多的配置文件,只是保守的去设置默认的几个配置文件中的初始化参数,它并不与其他节点进行交互,并且也不使用HDFS文件系统,它主要就是为了调试MapReduce程序而生。2.Hadoop伪分布式安装模式Hadoop伪分布式安装,需要配置5个常规的配置文件(XML),并且这里涉及到了NameNode和DataNode节点交互问题,而且NameNode和DataNode在同一个节点上,还需要配置互信。其实从严格意义上来讲,伪分布式集群,就已经可以称之为真正意义上的集群了,而且这里也包含了hdfs和MapReduce所有组件,只不过就是所有组件在同一个节点上而已。3.Hadoop完全分布式安装模式Hadoop完全分布式集群主要分为:常规Hadoop完全分布式集群和Hadoop HA集群(这里主要针对的是NameNode个数和NameNode的高可用保障机制而言)。由此可知较伪分布式集群而言,完全分布式集群,所有处理节点并不在同一个节点上,而是在多个节点上。

搭建一个伪分布式集群

一、环境搭建

1、系统环境平台:VMware Workstation 14系统:centos  7.42、修改主机名:hostnamectl  set-hostname  hadoopuseradd   hadooppasswd hadoopvisoduhadoop    ALL=(ALL)   ALL注:改完主机名后,需要exit退出,重新启动。3、修改/etc/hosts域名解析配置文件vi   /etc/hosts192.168.80.100   hadoop4、关闭防火墙和selinuxsystemctl disable  firewalldsystemctl  stop firewalldsetenforce  0sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  5、安装时间同步yum -y install ntpdate ntpdate time1.aliyun.com6、安装Java环境1)解压Java压缩包tar -xf jdk-8u11-linux-x64.tar.gz  -C /optcp -rf jdk1.8.0_11/   /usr/local/java2)配置Java环境变量vi /etc/profile末尾新增:export JAVA_HOME=/usr/local/javaexport JRE_HOME=/usr/local/java/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin3)生效环境变量source  /etc/profile4)验证java  -version出现以下提示,代表java环境部署成功:java version "1.8.0_11"Java(TM) SE Runtime Environment (build 1.8.0_11-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)二、hadoop正式部署安装官方文档:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_Operation下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-3.1.0/hadoop-3.1.0.tar.gz1、解压hadoop软件包tar xf hadoop-3.1.0.tar.gz  2、重命名mv hadoop-3.1.0/ /home/hadoop/hadoop3、配置环境变量vi  /etc/profileexport HADOOP_HOME=/home/hadoop/hadoopexport LD_LIBRARY_PATH=$HADOOP_HOME/lib/nativeexport HADOOP_COMMON_LIB_NATIVE_DIR=/home/hadoop/hadoop/lib/nativeexport HADOOP_OPTS="-Djava.library.path=/home/hadoop/hadoop/lib"export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin#hadoop-3.1.0必须添加如下5个变量否则启动报错,hadoop-2.x貌似不需要export HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=root

4、生效环境变量source /etc/profile5、测试是否配置成功hadoop version出现以下信息,代表配置成功:Hadoop 3.1.0Source code repository https://github.com/apache/hadoop -r 16b70619a24cdcf5d3b0fcf4b58ca77238ccbe6dCompiled by centos on 2018-03-30T00:00ZCompiled with protoc 2.5.0From source with checksum 14182d20c972b3e2105580a1ad6990This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.0.jar

7、hadoop目录认识修改配置文件之前,先看一下hadoop下的目录:bin:hadoop最基本的管理脚本和使用脚本所在目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用hadoopetc:配置文件存放的目录,包括core-site.xml,hdfs-site.xml,mapred-site.xml等从hadoop1.x继承而来的配置文件和yarn-site.xml等hadoop2.x新增的配置文件include:对外提供的编程库头文件(具体动态库和静态库在lib目录中,这些头文件军事用c++定义的,通常用于c++程序访问hdfs或者编写mapreduce程序)Lib:该目录包含了hadoop对外提供的才变成动态库和静态库,与include目录中的头文件结合使用libexec:各个服务对应的shell配置文件所在目录,可用于配置日志输出目录、启动参数等信息sbin:hadoop管理脚本所在目录,主要包含hdfs和yarn中各类服务的启动、关闭脚本share:hadoop各个模块编译后的jar包所在目录。cd  /home/hadoop/hadoop/etc/hadoop     #此目录是存放配置文件的vi hadoop-env.sh     #hadoop的变量设置脚本#hadoop-3.1.0是第54行,hadoop-2.7.7是第25行export JAVA_HOME=/usr/local/java测试:mkdir  /home/inputhadoop  jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar  wordcount  /home/input  /home/output

hdfs  dfs -ls / 

cd /home/hadoop/hadoop/etc/hadoop/vi  core-site.xml   #hadoopg公共文件,全局配置文件添加以下几行:            fs.defaultFS           hdfs://hadoop:9000                          hadoop.tmp.dir    #指定临时数据存储目录        /home/hadoop/hadoop/tmp    #系统路径        注意:在hadoop安装目录的文档中有所有配置文件的默认参数表,用户可以查看后,根据实际情况进行修改。uri是使用自己的协议以及自己的地址端口

/usr/local/hadoop/share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.html文档中可以看到:hadoop.tmp.dir的默认值是/tmp/hadoop-${user.name}。/tmp/是Linux系统的临时目录,如果我们不重新指定的话,默认Hadoop工作目录在Linux的临时目录,一旦Linux系统重启,所有文件将会清空,包括元数据等信息都丢失了,需要重新进行格式化,非常麻烦。vi  hdfs-site.xml    #hdfs站点配置文件添加以下几行:                dfs.replication   #指定hdfs的副本数        1   #指定副本数量                 dfs.http.address         192.168.80.100:50070     注:hdfs-default.xml文档中可以看到:dfs.replication的默认值是3,由于HDFS的副本数不能大于DataNode数,而我们此时安装的hadoop中只有一个DataNode,所以将dfs.replication值改为1。dfs.namenode.http-address在hadoop-3.1.0版本上的默认值是?0.0.0.0:9870 ,在hadoop-2.7.7版本上的默认值是0.0.0.0:50070,所以不同版本可以通过不同端口访问NameNode。

cp mapred-site.xml.templete mapred-site.xml #重命名,hadoop-3.1.0系统中就是mapred-site.xml不需要改名,hadoop-2.x需要改名vi mapred-site.xml #添加如下几行,指定hadoop运行在哪种计算框架上,这里指定yarn框架。  mapreduce.framework.name   #指定MapReduce程序放在哪个服务上去启用  yarn

vi yarn-env.xml    #2.x版本需要更改jdk路径export JAVA_HOME = vi yarn-site.xml #添加如下几行                yarn.resourcemanager.hostname        hadoop                    yarn.nodemanager.aux-services   #        mapreduce_shuffle    

8、免密码交互ssh-keygen -t rsa    #生成ssh密钥对Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): #直接回车Enter passphrase (empty for no passphrase): #直接回车Enter same passphrase again: #直接回车Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:9NevFFklAS5HaUGJtVrfAlbYk82bStTwPvHIWY7as38 root@hadoopThe key's randomart image is:+---[RSA 2048]----+|                               ||                               ||                               ||     .                         ||    . o S =                ||     ..O * =               ||     =X.%.E . .        ||    *+=%oBo+.o    ||   o=B+o++o.oo.  |+----[SHA256]-----+cd /root/.ssh/ls id_rsa  id_rsa.pub  known_hosts注:#id_rsa为私钥,id_rsa.pub为公钥因为搭建的是hadoop伪分布式,所以namenode与datanode都在一个节点上。cp id_rsa.pub authorized_keys #使主机之间可以免密码登录ssh hadoop date #查看(不需要输入密码,直接输出结果,说明免密成功)9、启动hadoop集群1)首先格式化NameNode注意:如果格式化NameNode之后运行过hadoop,然后又想再格式化一次NameNode,那么需要先删除第一次运行Hadoop后产生的VERSION文件,否则会出错,详情见第四部分问题4。cd[root@hadoop ~]# hdfs namenode -format #中间没有报错并且最后显示如下信息表示格式化成功.../************************************************************SHUTDOWN_MSG: Shutting down NameNode at hadoop/192.168.80.100************************************************************/

格式化完成后,系统会在dfs.data.dir目录下生成元数据信息。name/currentdata/currentbin/hdfs  namenode -formatsbin/hadoop-daemon.sh start namenodesbin/hadoop-daemon.sh start   datanode或者:start-dfs.shstart-yarn.sh2)输入 start-all.sh 启动start-all.shStarting namenodes on [hadoop]上一次登录:四 4月 18 23:06:27 CST 2019从 192.168.80.1pts/1 上Starting datanodes上一次登录:四 4月 18 23:53:44 CST 2019pts/1 上localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.Starting secondary namenodes [hadoop]上一次登录:四 4月 18 23:53:46 CST 2019pts/1 上2019-04-18 23:54:08,969 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicableStarting resourcemanager上一次登录:四 4月 18 23:54:03 CST 2019pts/1 上Starting nodemanagers上一次登录:四 4月 18 23:54:10 CST 2019pts/1 上3)执行 jps 验证集群是否启动成功 jps #显示以下几个进程说明启动成功96662 Jps95273 DataNode #可有可无95465 SecondaryNameNode #重要95144 NameNode #重要95900 NodeManager #可有可无95775 ResourceManager #非常重要

4)登录HDFS管理界面(NameNode):http://ip:50070

5)登录MR管理界面: http://ip:8088

使用:上传文件到hdfs中:hadoop  fs  -put  aa    hdfs://192.168.80.100:9000/注:aa是要上传的文件名

简写:hadoop  fs -put  aa  /从hdfs中下载文件:hadoop  fs  -get hdfs://192.168.80.100:9000/aa

在hdfs中创建目录:hadoop  fs  -mkdir  hdfs://192.168.80.100:9000/word也可以简写:hadoop  fs  -mkdir  /word

调用MapReduce程序:hadoop  jar   hadoop-mapreduce-examples~   pi  5   5注:pi:主类,计算圆周率5:参数,map的任务数量5:每个map的取样数hadoop  jar  hadoop-mapreduce-example~   word   /word/input   /word/outputhadoop  fs -ls  /word/outputhadoop fs  -cat   /word/output/part~HDFS的实现思想:1、hdfs是通过分布式集群来存储文件2、文件存储到hdfs集群中去的时候是被切分成block的3、文件的block存放在若干台datanode节点上4、hdfs文件系统中的文件与真实的block之间有映射关系,由namenode管理5、每一个block在集群中会存储多个副本,好处是可以提高数据的可靠性,还可以提高访问的吞吐量我们可以看到不管是启动还是关闭hadoop集群,系统都会报如下错误: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable解决方式:先看看我们安装的hadoop是否是64位的[root@hadoop hadoop]# file /usr/local/hadoop/lib/native/libhadoop.so.1.0.0  #出现以下信息表示我们的hadoop是64位的/usr/local/hadoop/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8d84d1f56b8c218d2a33512179fabffbf237816a, not stripped永久解决方式:vi /usr/local/hadoop/etc/hadoop/log4j.properties #在文件末尾添加如下一句,保存退出log4j.logger.org.apache.hadoop.util.NativeCodeLoader=Error配置说明    JDK :Hadoop和Spark 依赖的配置,官方建议JDK版本在1.7以上!!!    Scala:Spark依赖的配置,建议版本不低于spark的版本。    Hadoop: 是一个分布式系统基础架构。    Spark: 分布式存储的大数据进行处理的工具。    zookeeper:分布式应用程序协调服务,HBase集群需要。    HBase: 一个结构化数据的分布式存储系统。    Hive: 基于Hadoop的一个数据仓库工具,目前的默认元数据库是mysql。配置历史服务器vi mapred-site.xml    mapreduce.jobhistory.address    hadoop:10020    mapreduce.jobhistory.webapp.address    hadoop:19888启动历史服务器:sbin/mr-jobhistory-daemon.sh start historyserver查看历史服务器是否启动jps查看jobhistory:192.168.80.100:19888配置日志聚集日志聚集:应用运行完成以后,将程序运行日志信息上传到HDFS系统上好处:可以方便的查看到程序运行详情,方便开发调试注:开启日志聚集功能,需要重新启动NodeManager、ResourceManager和HistoryManager步骤:关闭所有sbin/mr-jobhistory-daemon.sh  stop  historyserversbin/yarn-daemon.sh stop nodemanagersbin/yarn-daemon.sh stop resourcemanagerjpsvi yarn-site.xml    yarn.log-aggregation-enable    true    yarn.log-aggregation.retain-seconds    604800sbin/yarn-daemon.sh start resourcemanagersbin/yarn-daemon.sh start nodemanagersbin/mr-jobhistory-daemon.sh  start  historyserver测试:hadoop  jar   hadoop-mapreduce-examples~   pi  5   5
0