大连网站建,wordpress在线教育,网站建设投标,什么网站可以做产品入驻1#xff1a;Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台。以Hadoop分布式文件系统#xff08;HDFS#xff09;和MapReduce#xff08;Google MapReduce的开源实现#xff09;为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。 注… 1Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS和MapReduceGoogle MapReduce的开源实现为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。 注意HADOOP的核心组件有 1HDFS分布式文件系统 2YARN运算资源调度系统 3MAPREDUCE分布式运算编程框架 Hadoop 中的分布式文件系统 HDFS 由一个管理结点 ( NameNode )和N个数据结点 ( DataNode )组成每个结点均是一台普通的计算机。在使用上同我们熟悉的单机上的文件系统非常类似一样可以建目录创建复制删除文件查看文件内容等。但其底层实现上是把文件切割成 Block然后这些 Block 分散地存储于不同的 DataNode 上每个 Block 还可以复制数份存储于不同的 DataNode 上达到容错容灾之目的。NameNode 则是整个 HDFS 的核心它通过维护一些数据结构记录了每一个文件被切割成了多少个 Block这些 Block 可以从哪些 DataNode 中获得各个 DataNode 的状态等重要信息。 MapReduce 是 Google 公司的核心计算模型它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数Map 和 Reduce, 这是一个令人惊讶的简单却又威力巨大的模型。适合用 MapReduce 来处理的数据集(或任务)有一个基本要求: 待处理的数据集可以分解成许多小的数据集而且每一个小数据集都可以完全并行地进行处理。基于它写出来的程序能够运行在由上千台商用机器组成的大型集群上并以一种可靠容错的方式并行处理T级别的数据集实现了Haddoop在集群上的数据和任务的并行计算与处理。 个人认为从HDFS分布式文件系统观点分析集群中的服务器各尽其责通力合作共同提供了整个文件系统的服务。从职责上集群服务器以各自任务分为namenode、datanode服务器.其中namenode为主控服务器datanode为数据服务器。Namenode管理所有的datanode数据存储、备份、组织记录分配逻辑上的处理。说明白点namenode就是运筹帷幄、负责布局指挥将军具体的存储、备份是由datanode这样的战士执行完成的。故此很多资料将HDFS分布式文件系统的组织结构分为master主人和slaver奴隶的关系。其实和namenode、datanode划分道理是一样的。 从MapReduce计算模型观点分析Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的也就是说计算节点和存储节点在一起。这种配置允许在那些已经存好数据的节点上高效的调度任务这样可以使整个集群的网络宽带得到非常高效的利用。另外在Hadoop中用于执行MapReduce任务的机器有两个角色JobTracker,TaskTracker。JobTracker一个集群中只能有一台是用于管理和调度工作的,TaskTracker是用于执行工作的。 在技术方面Hadoop体系具体包含了以下技术 Common在0.20及以前的版本中包含HDFS、MapReduce和其他项目公共内容从0.21开始HDFS和MapReduce被分离为独立的子项目其余内容为Hadoop Common。 1HADOOPhdfs、MAPREDUCE、yarn 元老级大数据处理技术框架擅长离线数据分析 2Avro新的数据序列化格式与传输工具将逐步取代Hadoop原有的IPC机制。 3MapReduce并行计算框架0.20前使用org.apache.hadoop.mapred旧接口0.20版本开始引入org.apache.hadoop.mapreduce的新API。 分布式运算程序开发框架 4HDFSHadoop分布式文件系统(Hadoop Distributed File System)。分布式文件系统 5Pig大数据分析平台为用户提供多种接口。 6Hive数据仓库工具由Facebook贡献。基于大数据技术文件系统运算框架的SQL数据仓库工具数据仓库工具使用方便功能丰富基于MR延迟大 7Hbase类似Google BigTable的分布式NoSQL列数据库。(HBase和Avro已经于2010年5月成为顶级Apache项目)。基于HADOOP的分布式海量数据库分布式海量数据库离线分析和在线业务通吃 8ZooKeeper分布式锁设施提供类似Google Chubby的功能由Facebook贡献。分布式协调服务基础组件分布式协调服务基础组件 9SqoopSqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具可以将一个关系型数据库(例如 MySQL, Oracle, Postgres等)中的数据导入到Hadoop的HDFS中也可以将HDFS的数据导入到关系型数据库中。数据导入导出工具 10Oozie负责MapReduce作业调度。工作流调度框架 11Mahout基于mapreduce/spark/flink等分布式运算框架的机器学习算法库。 12Flume日志数据采集框架数据采集框架 以上对Hadoop体系框架和相应技术做了相应分析并从HDFS、MapReduce的角度分析了集群中的角色扮演这既是我们实验的理论基础也是实验研究Hadoop深层次系统知识体系结构的意义所在。 Hadoop集群简介 1HADOOP集群具体来说包含两个集群HDFS集群和YARN集群两者逻辑上分离但物理上常在一起 2HDFS集群 负责海量数据的存储即负责数据文件的读写操作集群中的角色主要有 NameNode (Hdfs的大哥)/ DataNode(Hdfs的小弟) 3YARN集群 负责海量数据运算时的资源调度即负责为mapreduce程序分配运算硬件资源集群中的角色主要有 ResourceManager (Yarn的小哥)/NodeManager(Yarn的小弟) 4注意节点分配思想hdfs是数据的存储所以DataNode存储数据而yarn是资源调度所在的机器正好存在数据就可以进行调度否则通过网络传输在yarn上ResourceManager对NodeManager进行管理管理资源调度 。 5如果集群搭建案例以5节点为例进行搭建角色分配如下 机器-01 NameNode SecondaryNameNode 机器-02 ResourceManager 机器-03 DataNode NodeManager 机器-04 DataNode NodeManager 机器-05 DataNode NodeManager 2首先自己搞三台虚拟机这里使用centOs虚拟机本实验只搭建一个有三台主机的小集群。三台机器的具体分工命名如下 IP 主机名 功能角色 192.168.3.129 CentOS-01/master(主人) namenode控制节点、JobTracker(工作分配) 192.168.3.130 CentOS-02/slaver1奴隶 datanode数据节点、TaskTracker(任务执行) 192.168.3.131 CentOS-03/slaver2奴隶 datanode数据节点、TaskTracker(任务执行) 3讲解一下网络配置不然好多小伙伴不知道网络怎么搞以至于一直拖延不前 首先在VMware软件里面的编辑----》虚拟网络编辑器---》选择VMnet8模式 然后选择NET设置将网关ip修改为这个模式192.168.x.1格式 然后选择DHCP设置自己可以选择的ip地址范围 然后找到本地的网络设置设置一下本地网络 然后开始设置虚拟机的静态ip地址如下所示三个虚拟机按照如下进行设置下面只写一个虚拟机其他两个类比即可 鼠标右击找到Edit Connections 然后进行编辑 注意下面红色圈起来的地方Address分别设置成自己容易识别的我的是192.168.3.129192.168.3.130192.168.3.131 最后网络就可以使用了使用XShell进行远程连接方便操作 需要注意的是这里的网络设置必须是Net8模式的 4Hadoop完全分布式的安装需要以下几个过程 1 综述Hadoop完全分布式的安装需要以下几个过程
2 1为防止权限不够三台机器均开启root登录。
3 2为三台机器分配IP地址及相应的角色。
4 3对三台机器进行jdk安装并配置环境变量。
5 4对三台机器进行ssh(安全外壳协议)远程无密码登录安装配置。
6 5进行Hadoop集群完全分布式的安装配置。
7 下面对以上过程进行详细叙述。 5切换root用户进行操作三台机器都执行此操作即可 1如果正式工作了建议使用自己的用户而非root用户详细创建用户命令可百度 useradd 用户名称 passwd 密码 2新建用户以后会遇到一些很烦心的事情这个时候修改vim /etc/sudoers新用户的权限如给hadoop用户添加执行的权限 6在三台主机上分别设置/etc/hosts及/etc/sysconfig/network(centos操作系统) /etc/hostnameubuntu操作系统 hosts文件用于定义主机名与IP地址之间的对应关系(三台主机配置相同)。 如下所示 执行此命令[rootlocalhost hadoop]# vim /etc/sysconfig/network 主节点修改为master: 节点一修改为slaver1 节点二修改为slaver2 然后修改主机名称和ip的对应关系 三台主机配置相同 如下命令[rootlocalhost hadoop]# vim /etc/hosts 配置好以后进行重启三台电脑即可重启命令reboot 自己可以进行验证一下是否修改正确如ping master/ping slaver1/ping slaver2 7三台机器上安装jdk将linux版本的jdk上传到虚拟机上传操作之前说过此处省略注意jdk的是linux版本的 上传之后进行解压缩和配置环境变量 配置一下jdk的环境变量必须用root权限进行修改配置文件 [rootmaster hadoop]# vim /etc/profile 然后验证三台机器的jdk是否安装成功 验证之前先刷新一下配置文件[rootslaver1 hadoop]# source /etc/profile然后使用java/javac/java -version三个命令分别在三台机器上面进行验证8安装SSH配置免秘钥登录操作由于我的已经安装好了所以这一步略过自己可以去百度直接配置免秘钥登录 生成密钥并配置SSH免密码登录本机执行以下命令生成密钥对并把公钥文件写入授权文件中 生成密钥对并把公钥文件写入授权文件中cat ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys会自动创建authorized_keys文件然后将id_dsa.pub的内容写到authorized_keys文件里面这个时候去查看authorized_keys已经存在id_dsa.pub里面的内容生成密钥对及授权文件公钥在/root/.ssh/下 然后将授权文件复制到slaver1主机中输入命令 [hadoopmaster .ssh]$ scp authorized_keys root192.168.3.130:~/.ssh/ 可以看到slaver1已经存在授权文件 然后在slave1机器中使用同样命令生成密钥对将公钥写入授权文件中。然后将slaver1主机中的授权文件复制到slaver2中使用同样命令生成密钥对将公钥写入授权文件中。这样就完成了同一个授权文件拥有三个公钥。最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了ssh免密登录验证工作。 为了防止防火墙禁止一些端口号三台机器应使用 关闭防火墙命令ufw disable 重启三台机器防火墙关闭命令才能生效重启后后查看是否可以从master主机免密码登录slaver,输入命令ssh slaver1ssh slaver2 在slaver1进行生成密钥对将公钥写入授权文件中 将公钥写入授权文件中 然后将slaver1主机中的授权文件复制到slaver2中使用同样命令生成密钥对将公钥写入授权文件中。 使用同样命令在slaver2生成密钥对将公钥写入授权文件中。 将公钥写入授权文件中 这样就完成了同一个授权文件拥有三个公钥。最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了ssh免密登录验证工作。 然后查看master的授权文件 然后将此时的授权文件分别复制到slaver1主机中,这样就完成了 然后查看slaver1的授权文件 为了防止防火墙禁止一些端口号三台机器应使用 关闭防火墙命令ufw disable重启三台机器防火墙关闭命令才能生效/ service iptables stop暂时关闭防火墙方便测试使用 重启后后查看是否可以从master主机免密码登录slaver,输入命令 ssh slaver1 ssh slaver2 第一次登陆不知道为啥还是让输入一个yes,之后再进行登陆就直接登陆成功了 9进行Hadoop集群完全分布式的安装配置将下载的hadoop-2.2.0上传到虚拟机并解压至/home/hadoop目录下 [rootmaster hadoop]# tar -zxvf hadoop-2.4.1.tar.gz 三台hadoop文件配置相同所以配置完一台后可以把整个hadoop复制过去就行了现在开始配置master主机的hadoop文件。 需要配置的文件涉及到的有7个mapred-site.xml文件默认不存在的可以复制相应的template文件获得如mapred-site.xml文件。 如下图标示部分 配置文件1vim hadoop-env.sh 修改JAVA_HOME值如下图 配置文件2yarn-env.sh 修改JAVA_HOME值如下图 配置文件3slaves(保存所有slave节点)写入以下内容是给自动化启动脚本使用的哦切记是启动DataNode的 这里需要注意一下开始我的master节点写的 vim slaves出现了出现了hadoop DataNode启动不了的问题这里不是多次格式化造成的问题这里是master主节点的vim slaves内容是master而slaver1和slaver2的vim slaves内容是slaver1,slaver2,即下图内容所以造成了DataNode启动不了的问题。) 配置文件4core-site.xml 添加配置内容如下图 configuration!-- 指定HADOOP所使用的文件系统schemaURIHDFS的老大NameNode的地址,master即是namenode所在的节点机器9000是端口号NameNode是为客户提供服务的NameNode知道每一个文件存在哪一个datanode上面 --propertynamefs.defaultFS/namevaluehdfs://master:9000/value/property!-- 指定hadoop运行时产生文件的存储目录 --propertynamehadoop.tmp.dir/namevalue/home/hadoop/hadoop-2.4.1/tmp/value/property/configuration 配置文件5hdfs-site.xml configuration!-- 指定HDFS副本的数量,副本的数量避免一个机器宕掉了数据丢失默认是3个副本 --propertynamedfs.replication/namevalue2/value/property !-- 指定SecondNameNode在那台机器上面启动 -- property namedfs.secondary.http.address/name valuemaster:50090/value /property
/configuration 配置文件6mapred-site.xml [rootmaster hadoop]# mv mapred-site.xml.template mapred-site.xml configuration!-- 指定mr运行在yarn上即mapreduce运行在yarn上面 --propertynamemapreduce.framework.name/namevalueyarn/value/property
/configuration 配置文件7yarn-site.xml configuration!-- Site specific YARN configuration properties --
!-- 指定YARN的老大ResourceManager的地址这个地方主要看自己的机器分配情况如果是四台机器这个value值就是第四台的主机名称哦 --propertynameyarn.resourcemanager.hostname/namevaluemaster/value/property!-- reducer获取数据的方式 --propertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property/configuration 上面配置完毕后基本上完成了90%的工作剩下的就是复制。我们可以把整个hadoop复制过去使用命令如下 [rootmaster hadoop]# scp -r /home/hadoop/hadoop-2.4.1 slaver1:/home/hadoop/ [rootmaster hadoop]# scp -r /home/hadoop/hadoop-2.4.1 slaver2:/home/hadoop/然后去slaver1和slaver2就可以看到复制过去的hadoop-2.4.1 为方便用户和系统管理使用hadoop、hdfs相关命令置系统环境变量使用命令:vim /etc/profile 配置内容为hadoop目录下的bin、sbin路径具体如下 [rootslaver1 hadoop]# vim /etc/profile export JAVA_HOME/home/hadoop/jdk1.7.0_65export HADOOP_HOME/home/hadoop/hadoop-2.4.1export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 添加完后执行生效命令source /etc/profile 下面要做的就是启动验证建议在验证前把以上三台机器重启使其相关配置生效。 10启动验证 在master节点上进行格式化namenode 是对namenode进行初始化: 命令hadoop namenode -format或者hdfs namenode -format start-all.sh或者启动(start-dfs.sh和start-yarn.sh) 使用Jps命令master有如下进程,说明ok start-yarn.sh 启动namenode和datanode. hadoop-daemon.sh start namenode 启动namenode.hadoop-daemon.sh start datanode 启动datanode. [rootmaster hadoop]# start-all.sh 上面这个图是错误的由于master的vim slaves没有配置正确造成的。下图是修改过后显示的。 使用jps命令slaver1、slaver2有如下进程,说明ok 查看集群状态,命令hadoop dfsadmin -report 查看分布式文件系统http://master:50070 除了浏览器查看集群的状态可以使用命令查看此命令比浏览器查看更加准确 [rootmaster hadoop]# hdfs dfsadmin -report 查看MapReducehttp://master:8088 使用以上命令当你看到如下图所示的效果图时恭喜你完成了Hadoop完全分布式的安装设置其实这些部署还是比较基本的对于Hadoop高深的体系结构和强大技术应用这仅仅是一个小小的开始。 11集群的关闭在master节点上执行命令如下 stop-all.sh或者stop-dfs.sh和stop-yarn.sh 12hadoop基本操作实践 基本命令
1. 格式化工作空间
进入bin目录运行 hadoop namenode –format
2. 启动hdfs
进入hadoop目录,在bin/下面有很多启动脚本可以根据自己的需要来启动。
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode
* stop-dfs.sh 停止DFS守护
HDFS文件操作
Hadoop使用的是HDFS能够实现的功能和我们使用的磁盘系统类似。并且支持通配符如*。
1. 查看文件列表
b. 执行hadoop fs -ls /
查看hdfs中/目录下的所有文件包括子目录下的文件。
a. 执行hadoop fs -ls -R /
2. 创建文件目录
a. 执行hadoop fs -mkdir /newDir
3. 删除文件
删除hdfs中/目录下一个名叫needDelete的文件
a. 执行hadoop fs -rm /needDelete
删除hdfs中/hdfs目录以及该目录下的所有文件
a. 执行hadoop fs -rm -r /hdfs
4. 上传文件
上传一个本机/home/admin/newFile的文件到hdfs中/目录下
执行hadoop fs –put /home/admin/newFile /
5. 下载文件
下载hdfs中/ 目录下的newFile文件到本机/home/admin/newFile中
a. 执行hadoop fs –get /newFile /home/admin/newFile
6. 查看文件内容
查看hdfs中/目录下的newFile文件
a. 执行hadoop fs –cat /newFile 2017-11-22 14:06:19 停更......