单机,伪分布式,完全分布式 您所在的位置:网站首页 Hadoop三种安装模式的区别 单机,伪分布式,完全分布式

单机,伪分布式,完全分布式

2024-05-27 03:05| 来源: 网络整理| 查看: 265

Hadoop大数据——随着计算机技术的发展,互联网的普及,信息的积累已经到了一个非常庞大的地步,信息的增长也在不断的加快。信息更是爆炸性增长,收集,检索,统计这些信息越发困难,必须使用新的技术来解决这些问题。大数据由巨型数据组成,这些数据集大小超出人类在可接受时间下的收集,使用,管理和处理能力。把数据集合并进行分析可得出许多额外的信息和数据关系性,可用来察觉商业趋势,判定研究质量,避免疾病扩散,打击犯罪或测定及时交通路况等,这样的用途正是大型数据集盛行的原因。从各种各样类型的数据中,快速获得有价值信息的能力,适用于大数据的技术,包括大规模并行处理数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统。

大数据特性—— 数量:TB/EB级,记录/日志,事物,表&文件 速度:批处理,实时,多进程,数据流 种类:结构化,非结构化,多因素,概率性 价值:统计学,事件性,相关性,假设性 真实性:可信性,真伪性,来源&信誉,有效性,可审计性

大数据与Hadoop—— Hadoop是一种分析和处理海量数据的软件平台,开源,使用Java开发,可以提供一个分布式基础架构。 特点:高扩展性,高可靠性,高效性,高容错性,低成本

Hadoop起源——03年开始,Google陆续发表了几篇论文,GFS,MapReducs,BigTable。GFS是一个可扩展的分布式文件系统,用于大型的,分布式的,对大量数据进行访问的应用,他运行于廉价的平台硬件上,提供容错功能。Mapreduce是针对分布式并行计算的一套编程模型,由MAP和reducs组成,,Map是影设,把指令分发到多个worker上去,reducs是规约,把Map的worker计算出来的结果合并。 bigtable:存储结构化数据,bigtable是建立在GFS,scheduler,lockserver和Mapreduce之上的,每个table都是一个多维的稀疏图。

这三大技术被称为Google的三驾马车,虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文,Yahoo资助Hadoop按照这三篇论文的开源Java实现,不过在性能上Hadoop比Google要差很多。 GFS-----> HDFS Mapreduce--------> Mapreduce bigtable-------> Hbase

Hadoop常用组件—— hdfs(hadoop分布式文件系统) mapreduce(分布式计算框架) zookeeper(分布式协作服务) hbase(分布式列存数据库) hive(基于Hadoop的数据仓库) sqoop(数据同步工具) pig(基于Hadoop的数据流系统) mahout(数据挖倔算法库) flume(日志收集工具)

Hadoop核心组件—— processing:spark,mapreduce(分布式计算框架) resource management:yarn(集群资源管理系统) storage:hdfs(分布式文件系统)

hdfs角色及概念—— 是Hadoop体中数据存储管理的基础,他是一个高度容错的系统,用于低成本的通用硬件上运行。

角色和概念: client---(切分文件,访问hdfs,与namednode交互,获取文件位置信息,与datanode交互,读取和写入数据) namenode---(master节点,管理hdfs的名称空间和数据块映射信息,配置副本策略,处理所有客户端请求) secondary namenode---(定期合并fsimage和fsedits,推送给namenode,紧急情况下,可辅助恢复namenode,它并非是热备份) datanode---(数据存储节点,存储实际的数据,汇报存储信息给namenode) block:每块缺省64mb大小,每块可以多个副本

mapreduce结构——源自Google的mapreduce论文,java实现的分布式计算框架。 角色及概念:  jobtracker--(master节点,只有一个,管理所有作业,任务/作业的监控,错误处理等,将任务分解成一系列任务,并分派给tasktracker)  tasktracker--(slave节点,一般是多台,运行map task和reduce task,并与jobtracker交互,汇报任务状态)  map task--(解析每条数据记录,传递给用户编写的map(),并执行,将输出结果写入本地磁盘,如果为map-only作业,直接写入hdfs)  reducer task--(从map task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行)

yarn结构——yarn是Hadoop的一个通用的资源管理系统,yarn的核心思想是将jobtracker和tasktacker进行分离。 由下面极大构成组件:  resourcemanager:一个全局的资源管理器  nodemanager:每个节点(RM)代理  applicationmaster:表示每个应用  每一个applicationmaster有多个container在nodemanager上运行。

yarn角色: resourcemanager--(处理客户端请求,启动/监控applicationmaster,监控nodemanager,资源分配与调度) nodemanager--(单个节点上的资源管理,处理来自resourcemanager和applicationmaster的命令) applicationmaster--(数据切分,为应用程序申请资源,并分配给内部任务,任务监控与容错) container--(对任务运行环境的抽象,封装了cpu,内存等,多维资源以及环境变量,启动命令等任务运行相关的信息资源分配与调度) client--(用户与yarn交互的客户端程序,提交应用程序,监控应用程序状态,杀死应用程序等)

————————————————————————————————————————————————————————————————————————————————————————————————————————————

Hadoop安装配置—— Hadoop的部署模式有三种  单机  伪分布式(伪分布式的安装和完全分布式安装一样,区别是所有角色都安装在一台机器上,使用本地磁盘,一般生产环境都会使用完全分布式,伪分布式一般用学习和测试方面的功能,所以这次为分布式就不搭建了)  完全分布式

Hadoop单机模式安装配置:  Hadoop的单机模式安装非常简单,只需要配置好环境变量即可运行,这个模式一般用来学习和测试。(配置时注意把主机名和对应的ip地址加到hosts文件上,dns是不管用的)  获取软件:http://hadoop.apache.org  安装配置java环境,安装jps工具:安装openjdk和openjdk-devel  设置环境变量,启动运行:hadoop-env.sh JAVA_HOME=""

[root@x ~]# yum -y install java-1.8.0-openjdk-devel.x86_64(安装Java开发包)[root@x ~]# java -version(安装jdk后运行命令要能看见版本信息)openjdk version "1.8.0_131"[root@x ~]# jps(jps要可以看见pid号)1527 Jps[root@x ~]# tar -xvf hadoop-2.8.4.tar.gz(解压)[root@x ~]# mv hadoop-2.8.4 /usr/local/hadoop(移动到/usr/local/hadoop下)[root@x ~]# rpm -qa | grep openjdk(查看openjdk的安装信息)[root@x ~]# rpm -ql java-1.8.0-openjdk-devel-1.8.0.131-11.b12.el7.x86_64(查看openjdk安装到哪个目录下)........../usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/bin..........[root@x]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/(Java的家目录)[root@x hadoop]# cd /usr/local/hadoop/etc/hadoop/(到Hadoop的配置目录下)[root@x hadoop]# vim hadoop-env.sh(修改配置Java环境变量)export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre"(Java的家目录)export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"(修改Hadoop的配置文件路径)[root@x bin]# ./hadoop version(到/usr/local/hadoop/bin目录执行命令,可以看到版本信息就说明没问题了)Hadoop 2.8.4Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 17e75c2a11685af3e043aa5e604dc831e5b14674Compiled by jdu on 2018-05-08T02:50ZCompiled with protoc 2.5.0From source with checksum b02a59bb17646783210e979bea443b0This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.4.jar

模块简介:[root@x hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jarAn example program must be given as the first argument.Valid program names are:  aggregatewordcount:  aggregatewordhist:  bbp:  dbcount:  distbbp:  grep:(支持正则表达式,匹配关键字)  join:  multifilewc:  pentomino:  pi:  randomtextwriter:  randomwriter:  secondarysort:  sort:  sudoku:  teragen:  terasort:  teravalidate:  wordcount:(统计模块,统计每个词出现的频率,把要分析的文件结果放到指定的某个文件下)  wordmean:  wordmedian:  wordstandarddeviation:

实例:[root@x hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar wordcount /root/xx/passwd /root/output(运行wordcount统计模块,我提前在root/xx/复制了、etc/passwd这个文件,现在就是分析这个文件,并把分析结果放到root/output这个文件)[root@x ~]# cat output/part-r-00000 (统计每个词出现的频率)Daemon:/var/lib/rpcbind:/sbin/nologin    1Management:/:/sbin/nologin    1Network    1SSH:/var/empty/sshd:/sbin/nologin    1User:/var/ftp:/sbin/nologin    1abrt:x:173:173::/etc/abrt:/sbin/nologin    1

[root@x hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar grep /root/xx/passwd /root/xxx 'uuid'(运行grep正则匹配模式,匹配root/xx/passwd/这个文件的uuid这个关键字,把内容保存到root/xxx文件里)[root@x ~]# cat xxxx/part-r-00000(查看结果root出现了4次)4    root

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

Hadoop伪分布式Hadoop-env.sh(配置环境变量)    JAVA_HOME    HADOOP_CONF_DIR

Xml文件配置格式(name和value是对应的,且只能修改变量值,关键字不可修改)        (关键配置)          关键字          变量值          描述(描述写也可以,不写就dd)            (常用配置)         关键字         变量值       

cd /usr/local/hadoop/etc/hadoop/core-site.xml  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/core-default.xml

hdfs-site.xml  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml  dfs.replication:设置数据存放多少份  dfs.namenode.name.dir:存映射关系数据的路径  dfs.datanode.data.dir:真实存放数据的路径  dfs.namenode.http-address:namenode  dfs.namenode.secnodary.http-address:namenode的辅助  dfs.webhdfs.enabled:默认正常情况会打开调用,在互联网下为了安全起见要关闭  dfs.permissions.enabled:设置hdfs的一个权限,默认打开,

mapred-default.xml: 详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml  mapreduce.framework.name:使用什么样的集群管理系统,默认是local  mapreduce.jobtracker.http.address:jobtracker的ip地址  mapreduce.jobhistory.address:  mapreduce.jobhistory.webapp.address:

yarn-default.xml  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-yarn/hadoop-yarn-common/yarn-default.xml  yarn.resourcemanager.hostname:(配了这个值,倒数1到5的值都不用配置,不配置hostname,后面的都要配置)  yarn.nodemanager.aux-services:  yarn.nodemanager.aux-services.mapreduce_shuffle.class:(使用什么样的类)  yarn.resourcemanager.address:  yarn.resourcemanager.scheduler.address:  yarn.resourcemanager.resource-tracker.address:  yarn.resourcemanager.admin.address:  yarn.resourcemanager.webapp.address:

Deprecated Properties  详细介绍:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/DeprecatedProperties.html

[root@x ~]# cd /usr/local/hadoop/etc/hadoop/[root@x hadoop]# vim core-site.xml    (关键配置)      fs.defaultFs(Hadoop运行起来使用哪个集群的文件系统)      hdfs://x.sec.com:9000(hdfs表示及群文件系统 namenode主机和端口号)        (常用配置)      hadoop.tmp.dir(Hadoop数据存放地址)      /vat/hadoop(数据存放路径)   

实例:常用的配置文件[root@x hadoop]# vim hdfs-site.xml            dfs.namenode.http-address(namenode)        x.sec.com:50070(hosts文件里的域名或者ip地址:端口)                dfs.namenode.secnodary.http-address(namenode辅助)        x.sec.com:50070(namenode主机的域名或者ip地址:端口)                dfs.webhdfs.enabled        true                dfs.replication        2   

[root@x hadoop]# cp mapred-site.xml.template mapred-site.xml(默认是template,复制一份)[root@x hadoop]# vim mapred-site.xml          mapreduce.framework.name      yarn(集群管理系统用yarn)              mapreduce.jobhistory.http.address(jobhistory)      x.sec.com:50030(jobhistory主机的域名或者ip地址:端口)   

[root@x hadoop]# vim yarn-site.xml          yarn.resourcemanager.hostname(resourcemanager.hostname)      x.sec.com(地址)              yarn.nodemanager.aux-services.mapreduce_shuffle.class      org.apache.hadoop.mapred.ShuffleHandler   

到此,伪分布式配置到此结束。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

HDFS分布式文件系统: 分布式文件系统,是指文件系统管理的物理存储资源不一定直接链接在本地节点上,而是通过计算机网络与节点相连 分布式文件系统的设计基于客户机/服务器模式,一个典型的网络可能包括多个供多用户访问的服务器,对等特性允许一些系统扮演客户机和服务器的双重角色。

完全分布式Hadoop搭建配置搭建前的准备:把所有主机的selinux和防火墙关闭,并安装jdk环境,在所有主机的hosts文件下,写上对应的主机名和ip地址,就算有dns也不会生效,一定要在hosts文件下把主机对应的ip地址写上。确保安装不会出错。注意:保证所有机器上的系统版本及Java版本的一致性,保证所有安装路径的一致性,还要配置ssh信任关系,主机xx(也就是namenode,secondarynamenode,resouremanager这角色的主机)不需要输入yes也要能成功其他主机。

[root@xx ~]# rm -rf /root/.ssh/known_hosts(把这里的公钥删除)[root@xx ~]# ssh-keygen -t rsa(rsa加密方式,生成密钥对)Enter file in which to save the key (/root/.ssh/id_rsa): (回车)/root/.ssh/id_rsa already exists.Overwrite (y/n)? y(yes)Enter passphrase (empty for no passphrase):(回车) Enter same passphrase again: (回车)SHA256:uNb56uc2XhAD0O3lTgnPLykRcNq1mnH4isrG9j0UTGY root@xxThe key's randomart image is:+---[RSA 2048]----+|      .ooo. .    ||        .=Eo..   ||        .**Bo.   ||       .  =O*    ||      . S +=.o   ||       o ooo+ .  ||     .o +.....   ||     o+. o=.     ||     ooo+*=o     |+----[SHA256]-----+[root@xx ~]# cd /root/.ssh/(进入ssh的秘钥保存文件)[root@xx .ssh]# scp -p ~/.ssh/id_rsa.pub 172.16.232.30:/root/.ssh/authorized_keys(把秘钥scp到其他客户机,也把这个公钥cp并覆盖到自己主机的authorized_keys,这样登录自己也可以免密码登录)

扩展:  authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥  id_rsa : 生成的私钥文件  id_rsa.pub : 生成的公钥文件  know_hosts : 已知的主机公钥清单

准备4台服务器,并规划好主机对应的角色主机xx:172.16.232.20  角色:namenode,secondarynamenode,resouremanager(master)主机xxx:172.16.232.30  角色:datanode,nodemanager(节点)主机xxxx:172.16.232.40  角色:datanode,nodemanager(节点)主机xxxxx:172.16.232.50  角色:datanode,nodemanager(节点)

实例:HDFS完全分布式系统配置配置 Hadoop-env.sh配置 core-site.xml配置 hdfs-site.xml

[root@xx ~]# yum -y install java-1.8.0-openjdk-devel.x86_64(在所有主机上操作)[root@xx ~]# jps(在所有主机上执行命令查看)2132 Jps[root@xx ~]# java -versionopenjdk version "1.8.0_131"

配置 Hadoop-env.sh(配置环境变量)[root@xx ~]# tar -xvf hadoop-2.8.4.tar.gz -C /usr/local/(把Hadoop解压到/usr/loacl/)[root@xx local]# mv hadoop-2.8.4/ hadoop(到目录下重命名为hadoop)[root@xx ~]# readlink -f $(which java)(找到jre的家目录)/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/bin/java[root@xx ~]# cd /usr/local/hadoop/etc/hadoop/[root@xx hadoop]# vim hadoop-env.sh (配置环境变量)# The java implementation to use.export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre"(把jre的家目录覆盖上去)export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"(Hadoop的配置文件目录,默认不是这个,要修改)

配置 core-site.xml[root@xx hadoop]# vim core-site.xml            fs.defaultFS        hdfs://xx.sec.com:9000(使用集群文件系统,namenode主机及端口)                hadoop.tmp.dir(Hadoop数据存放地址)        /var/hadoop(数据存放路径)    [root@xx hadoop]# mkdir /var/hadoop(var下默认是没有Hadoop这个文件夹的,要创建一个文件,且要在所有主机上创建这个文件夹)[root@xxx ~]# mkdir /var/hadoop[root@xxxx ~]# mkdir /var/hadoop[root@xxxxx ~]# mkdir /var/hadoop

配置 hdfs-site.xml            dfs.namenode.http-address(namenode主机)        xx.sec.com:50070(地址,端口)                dfs.namenode.secondary.http-address        xx.sec.com:50090                dfs.replication(数据冗余,备份)        2(备份两份)   

[root@xx hadoop]# vim slaves(编辑这个文件,没有就创建一个,这个文件是namenode集群的主机节点,写上hosts文件里的节点主机,且这里面的主机,不用输入密码也能登录)xxx.sec.comxxxx.sec.comxxxxx.sec.com

[root@xx ~]# scp -r /usr/local/hadoop/ 172.16.232.30:/usr/local/(把xx主机/usr/local/hadoop拷贝到所有集群接节点上)  [root@xx ~]# scp -r /usr/local/hadoop/ 172.16.232.40:/usr/local/[root@xx ~]# scp -r /usr/local/hadoop/ 172.16.232.50:/usr/local/

[root@xx ~]# cd /usr/local/hadoop/bin/(到目录下)[root@xx bin]# ./hadoop version(到所有节点上执行命令,出现以下版本信息就成功安装了完全分布式)Hadoop 2.8.4Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 17e75c2a11685af3e043aa5e604dc831e5b14674Compiled by jdu on 2018-05-08T02:50ZCompiled with protoc 2.5.0From source with checksum b02a59bb17646783210e979bea443b0This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.4.jar

[root@xx ~]# cd /usr/local/hadoop/[root@xx hadoop]# ./bin/hdfs namenode -format(执行格式化操作namenode -format,只在master主机上操作).............18/05/30 20:07:15 INFO common.Storage: Storage directory /var/hadoop/dfs/name has been successfully formatted.(存储目录格式化成功就说明成功了,没有就根据报错排错).............[root@xx hadoop]# ./sbin/start-dfs.sh (也是只在master主机上执行)[root@xx hadoop]# jps(执行jps后可以看到节点主机说明没问题了)[root@xx hadoop]# jps 3442 Jps3319 SecondaryNameNode1548 ResourceManager3132 NameNode

到其他客户机执行jps也要看到信息[root@xxx hadoop]# jps2070 DataNode2238 Jps

[root@xxxx hadoop]# jps1987 DataNode2157 Jps

[root@xxxxx hadoop]# jps2145 Jps1986 DataNode

[root@xx hadoop]# ./bin/hdfs dfsadmin -report(在master主机执行命令,可以看到所有节点主机的信息就完成了)Configured Capacity: 160982630400 (149.93 GB)Present Capacity: 154619985920 (144.00 GB)DFS Remaining: 154619961344 (144.00 GB)............................-------------------------------------------------Live datanodes (3):

Name: 172.16.232.30:50010 (xxx.sec.com)Hostname: xxx.sec.comDecommission Status : NormalConfigured Capacity: 53660876800 (49.98 GB).............................

Name: 172.16.232.40:50010 (xxxx.sec.com)Hostname: xxxx.sec.comDecommission Status : NormalConfigured Capacity: 53660876800 (49.98 GB)..............................

Name: 172.16.232.50:50010 (xxxxx.sec.com)Hostname: xxxxx.sec.comDecommission Status : NormalConfigured Capacity: 53660876800 (49.98 GB).............................

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-

HDFS使用

HDFS基本命令(格式其实就是./bin/hadoop fs -后面追加标准的shell命令)  ./bin/hadoop fs -ls /    对应shell命令   ls /  ./bin/hadoop/ fs -mkdir /xxx    对应shell命令    mkdir /xxx  ./bin/hadoop/ fs -rmdir /xxx    对应shell命令    rmdir /xxx  [root@xx hadoop]# ./bin/hadoop fs(回车显示常用的命令)Usage: hadoop fs [generic options]    [-appendToFile ... ]    [-cat [-ignoreCrc] ...]    [-checksum ...]    [-chgrp [-R] GROUP PATH...]    [-chmod [-R] PATH...]    [-chown [-R] [OWNER][:[GROUP]] PATH...]    [-copyFromLocal [-f] [-p] [-l] [-d] ... ]    [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] ... ]    [-count [-q] [-h] [-v] [-t []] [-u] [-x] ...]    [-cp [-f] [-p | -p[topax]] [-d] ... ]    [-createSnapshot []]    [-deleteSnapshot ]    [-df [-h] [ ...]]    [-du [-s] [-h] [-x] ...]    [-expunge]    [-find ... ...]    [-get [-f] [-p] [-ignoreCrc] [-crc] ... ]    [-getfacl [-R] ]    [-getfattr [-R] {-n name | -d} [-e en] ]    [-getmerge [-nl] [-skip-empty-file] ]    [-help [cmd ...]]    [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [ ...]]    [-mkdir [-p] ...]    [-moveFromLocal ... ]    [-moveToLocal ]    [-mv ... ]    [-put [-f] [-p] [-l] [-d] ... ]    [-renameSnapshot ]    [-rm [-f] [-r|-R] [-skipTrash] [-safely] ...]    [-rmdir [--ignore-fail-on-non-empty] ...]    [-setfacl [-R] [{-b|-k} {-m|-x } ]|[--set ]]    [-setfattr {-n name [-v value] | -x name} ]    [-setrep [-R] [-w] ...]    [-stat [format] ...]    [-tail [-f] ]    [-test -[defsz] ]    [-text [-ignoreCrc] ...]    [-touchz ...]    [-truncate [-w] ...]    [-usage [cmd ...]]



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有