首页 > 其他分享 >胡说hadoop

胡说hadoop

时间:2022-08-25 21:55:35浏览次数:46  
标签:sql hadoop 任务 胡说 mysql 服务器 数据

想起名字为“hadoop保姆即教程”的,想了想自己不能误人子弟,还是算了。。。。

马上要开学了,没敢忘记我们还有暑假任务:学习hadoop并记录学习笔记。

为了证明我hadoop入门了,就口胡一下我对hadoop的认识。


一切从sqL开始说起。人们为了相对于较工作表能更好地存数据,找数据发明了sql,sql有三个特点。 由mysql进行数据的存储,实现了物理存储与逻辑存储低耦合,逻辑存储与展示低耦合(数据物理存储位置改变,表数据不会变;表数据增加或减少一行,展示在页面上的数据也可能不会变)。通过sql语句保证了数据查询的便利性 ,而且通过“锁”的机制保证了多个客户端查询的不冲突

但是,相对于数据量大的任务,比如google,baidu搜索,动不动上百万条数据,mysql便一愁莫展,力所不及。随着google三篇论文的出世,人们便想到可以利用并行执行任务减少处理时间,十个人板砖总比一个人板砖快嘛。最终hadoop出世。和sql一样,hadoop也有三个特点* 。先说存储数据, hadoop处理GB、TB级的数据还是没什么问题的,人家是几台电脑并行工作,通过HDFS实现数据的存储,当然数据可能存在不同的电脑上。对于数据的查询,人家也是并行查询,用mapreduce,把一个任务分成几块任务同时进行,再最后reduce合成一下。至于保证多个任务不冲突,由一个叫Yarn的模块控制,就是先划分多个队列,进来由n个客户端进来的任务,对每个任务划分到一个队列。这样可以每个队列执行一个任务,保证效率。

hadoop写代码不方便?写个类似sql查询功能的程序得至少写三个文件(mapper,reducer,driver),没问题,Hive是建立在hadoop上的一个软件,可以用类似sql的查询语句代替这三个文件,这不就跟sql差不多了?

好像还得学spark,用来取代mapreduce模块。原因是mapreduce是基于磁盘的,reduce阶段从磁盘拉取到内存太慢,而spark是基于内存的。同一个任务,spark所花的时间能达到MR所花的时间的三分之一。


所以,举个例子,口胡一下hadoop怎么工作的。

  • 假如未来工作的时候BOSS给了我们一个任务:给我们一个4MB的 data.txt文件,和一系列条件A,B,C(可能是性别,年龄啊等等)。让我们把最终的结果导进mysql或者txt文件中。

    • 把数据导进mysql,写java程序,用sql语句查询并导出到mysql或者txt文件
  • 现在BOSS的任务变了,文件大小从4MB增长到4GB(mysql根本存不下),正好你们公司又有个hadoop集群,BOSS准许你用它。

    • 把数据存进HDFS,写java程序,用Hive的HQL语句或者自己写mapreduce接口查询,结果写进Hive绑定的数据库或者写到单独的文件里。

接下来就是细节了,hadoop工作的细节。

先说一下前提,任务还是上面4G的数据的任务,给你hadoop集群的规格:三台服务器,每台服务器CentOS系统,4G内存,4cpu。

它是这么工作的:首先我通过我的电脑用远程连接连接到服务器,再向hdfs上传输4G的数据,hdfs是个文件存储系统,它对数据进行切分,128MB一块,一共分成32块,每块存放在这三台服务器的任何一台。接下来我写java程序,打包传输到服务器,在服务器上运行,yarn会根据我的任务所需要的资源给我分配到一个队列上(可能某条队列上正好有王五的任务在运行,我李四和他各走各的,不冲突),并给我分配一个ApplicationMaster管理我这个任务的进行。假设我写的reduce阶段只要求输出一个文件,于是hadoop给我分配32+1+1=34个容器,也就是4G多的内存。mapper容器32个。(这34个容器每个容器是一个线程,32>4(cpu数)*3(服务器数),不知道会不会把hadoop集群干瘫痪。)reduce阶段完成后,我想要的结果便会输出到一个文件夹或者服务器内置的mysql中(假设Hive连的是mysql)。然后我再把结果开心地下载下来就行了。


最后是hadoop的学习,我的建议是分四步:hadoop结构+虚拟机环境准备+集群搭建+java代码使用

  • hadoop结构这里没得说的,就是知道其三个组成:HDFS,Yarn,MapReduce是干什么的就行了

  • 虚拟机环境准备的话,需要装linux系统,设置虚拟机IP,装hadoop软件和javaJDK并配置环境变量

  • 集群搭建最重要,虚拟机上围绕着hdfs-site.xml,mapred-set.xml,yarn-site.xml,core-site.xml四个自定义配置文件搞。自己电脑上要装xshell,xftp并会用。搭建完成的标志是hdfs的9870端口,mapreduce的8088端口,历史服务器的19888端口,java连接集群用的8020端口全部打开

  • java代码使用的话,要会写mapper,reducer,driver类,会写序列化bean

上面是大的方向,最核心的还是弄懂hadoop三大组件的运行原理。

标签:sql,hadoop,任务,胡说,mysql,服务器,数据
From: https://www.cnblogs.com/zhuangzhongxu/p/16625872.html

相关文章

  • hadoop-day1-切分文件
    java模拟切分文件packagecom.shujia;importjava.io.*;importjava.util.ArrayList;publicclassSplitFileBlock{publicstaticvoidmain(String[]args)......
  • 搭建hadoop高可用集群
    一、搭建高可用集群1.1zookeeper搭建1、上传安装包到master并解压tar-xvfzookeeper-3.4.6.tar.gz2、配置环境变量vim/etc/profileexportZOOKEEPER_HOME=/usr/......
  • hadoop day2-内容理解
    进程理解HDFS相关(NN,DN,SSN)NameNode(NN)功能:1、接受客户端的读/写服务因为NameNode知道数据文件与DataNode的对应关系2、保存文件的时候会保存文件的元数据信息a......
  • hadoop -day4 安装zookeeper和HA高可用
    安装zookeeper1、上传安装包到master并解压(在/usr/local/soft/目录下) tar-zxvfzookeeper-3.4.6.tar.gz2、配置环境变量 vim/etc/profile ZOOKEEPER_HOME=/usr/local/......
  • hadoop集群搭建之测试集群,配置历史服务器,日志聚集,时间同步
    hadoop集群搭建之测试集群,配置历史服务器,日志聚集,时间同步前期概要:我们完全分布式集群已经搭建完毕,并且还写了群启/群关的脚本,接下来有必要来测试一遍集群,我们可以使用官......
  • hadoop day3-java实现hdfs
    如何用javaApi的方式来操作hdfs 新建maven项目,然后建立一个子工程在父工程中引入依赖(maven中hadoophdfs,hadoopcommon和hadoopclient) <!--https://mvnrepository......
  • Hadoop的由来、Block切分、进程详解
    Hadoop的由来、Block切分、进程详解一、hadoop的由来Google发布了三篇论文:GFS(GoogleFileSystem)MapReduce(数据计算方法)BigTable:HbaseDougcutting花费了两......
  • hadoop简介
    一句话简述:Hadoop是一个适合海量数据的分布式存储和分布式计算的平台。Hadoop的由来Google爬取全球的网站,然后计算页面的PageRank要解决网站的问题:a:这些网站怎么存......
  • Hadoop 二十三
    文件的更名和移动:    获取文件详细信息       遇到的问题:不能直接在web上上传文件。   权限问题:修改后即可正常创建  参考:https:/......
  • Hadoop 二十二
    参数优先级: 拿副本数举例子,优先级:hdfs-default.xml=>hadfs.xml=>在项目资源目录下的优先级高=>代码里的配置优先级高文件下载: ......