问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hadoop是做什么的?

发布网友 发布时间:2022-04-23 21:37

我来回答

6个回答

懂视网 时间:2022-04-09 00:06

 
  1. create table student(id INTEGER NOT NULL PRIMARY KEY,name VARCHAR(32) NOT NULL);  

 

技术分享

(3):插入数据

 

[java] view plain copy  
  1. insert into student values(1,"lavimer");  

技术分享

 

 

(4)编写MapReduce程序,我这里使用的版本是hadoop1.2.1,相关知识点都写在注释中了,如下:

 

[java] view plain copy  
  1. /** 
  2.  * 使用DBInputFormat和DBOutputFormat 
  3.  * 要把数据库的jdbc驱动放到各个TaskTracker节点的lib目录下 
  4.  * 重启集群 
  5.  * @author 廖钟民 
  6.  * time : 2015年1月15日下午12:50:55 
  7.  * @version 
  8.  */  
  9. public class MyDBInputFormat {  
  10.   
  11.     //定义输出路径  
  12.     private static final String OUT_PATH = "hdfs://liaozhongmin:9000/out";  
  13.       
  14.     public static void main(String[] args) {  
  15.           
  16.         try {  
  17.             //创建配置信息  
  18.             Configuration conf = new Configuration();  
  19.               
  20.             /*//对Map端的输出进行压缩 
  21.             conf.setBoolean("mapred.compress.map.output", true); 
  22.             //设置map端输出使用的压缩类 
  23.             conf.setClass("mapred.map.output.compression.codec", GzipCodec.class, CompressionCodec.class); 
  24.             //对reduce端输出进行压缩 
  25.             conf.setBoolean("mapred.output.compress", true); 
  26.             //设置reduce端输出使用的压缩类 
  27.             conf.setClass("mapred.output.compression.codec", GzipCodec.class, CompressionCodec.class);*/  
  28.               
  29.             // 添加配置文件(我们可以在编程的时候动态配置信息,而不需要手动去改变集群)  
  30.             /* 
  31.             * conf.addResource("classpath://hadoop/core-site.xml");  
  32.             * conf.addResource("classpath://hadoop/hdfs-site.xml"); 
  33.             * conf.addResource("classpath://hadoop/hdfs-site.xml"); 
  34.             */  
  35.               
  36.             //通过conf创建数据库配置信息  
  37.             DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver", "jdbc:mysql://liaozhongmin:3306/myDB","root","134045");  
  38.               
  39.             //创建文件系统  
  40.             FileSystem fileSystem = FileSystem.get(new URI(OUT_PATH), conf);  
  41.               
  42.             //如果输出目录存在就删除  
  43.             if (fileSystem.exists(new Path(OUT_PATH))){  
  44.                 fileSystem.delete(new Path(OUT_PATH),true);  
  45.             }  
  46.               
  47.             //创建任务  
  48.             Job job = new Job(conf,MyDBInputFormat.class.getName());  
  49.               
  50.             //1.1 设置输入数据格式化的类和设置数据来源  
  51.             job.setInputFormatClass(DBInputFormat.class);  
  52.             DBInputFormat.setInput(job, Student.class, "student", null, null, new String[]{"id","name"});  
  53.               
  54.             //1.2 设置自定义的Mapper类和Mapper输出的key和value的类型  
  55.             job.setMapperClass(MyDBInputFormatMapper.class);  
  56.             job.setMapOutputKeyClass(Text.class);  
  57.             job.setMapOutputValueClass(Text.class);  
  58.               
  59.             //1.3 设置分区和reduce数量(reduce的数量和分区的数量对应,因为分区只有一个,所以reduce的个数也设置为一个)  
  60.             job.setPartitionerClass(HashPartitioner.class);  
  61.             job.setNumReduceTasks(1);  
  62.               
  63.             //1.4 排序、分组  
  64.             //1.5 归约  
  65.             //2.1 Shuffle把数据从Map端拷贝到Reduce端  
  66.               
  67.             //2.2 指定Reducer类和输出key和value的类型  
  68.             job.setReducerClass(MyDBInputFormatReducer.class);  
  69.             job.setOutputKeyClass(Text.class);  
  70.             job.setOutputValueClass(Text.class);  
  71.               
  72.             //2.3 指定输出的路径和设置输出的格式化类  
  73.             FileOutputFormat.setOutputPath(job, new Path(OUT_PATH));  
  74.             job.setOutputFormatClass(TextOutputFormat.class);  
  75.               
  76.             //提交作业 然后关闭虚拟机正常退出  
  77.             System.exit(job.waitForCompletion(true) ? 0 : 1);  
  78.               
  79.         } catch (Exception e) {  
  80.             e.printStackTrace();  
  81.         }  
  82.     }  
  83.       
  84.     /** 
  85.      * 自定义Mapper类 
  86.      * @author 廖钟民 
  87.      * time : 2015年1月15日下午1:22:57 
  88.      * @version 
  89.      */  
  90.     public static class MyDBInputFormatMapper extends Mapper<LongWritable, Student, Text, Text>{  
  91.         //创建map输出时的key类型  
  92.          private Text mapOutKey = new Text();  
  93.          //创建map输出时的value类型  
  94.          private Text mapOutValue = new Text();  
  95.            
  96.         @Override  
  97.         protected void map(LongWritable key, Student value, Mapper<LongWritable, Student, Text, Text>.Context context) throws IOException, InterruptedException {  
  98.               
  99.             //创建输出的key:把id当做key  
  100.             mapOutKey.set(String.valueOf(value.getId()));  
  101.             //创建输出的value:把name当做value  
  102.             mapOutValue.set(value.getName());  
  103.               
  104.             //通过context写出去  
  105.             context.write(mapOutKey, mapOutValue);  
  106.         }  
  107.     }  
  108.       
  109.     /** 
  110.      * 自定义Reducer类 
  111.      * @author 廖钟民 
  112.      * time : 2015年1月15日下午1:23:28 
  113.      * @version 
  114.      */  
  115.     public static class MyDBInputFormatReducer extends Reducer<Text, Text, Text, Text>{  
  116.           
  117.         @Override  
  118.         protected void reduce(Text key, Iterable<Text> values, Reducer<Text, Text, Text, Text>.Context context) throws IOException, InterruptedException {  
  119.               
  120.             //遍历把结果写到HDFS中  
  121.             for (Text t : values){  
  122.                   
  123.                 context.write(key, t);  
  124.             }  
  125.         }  
  126.     }  
  127. }  
  128.   
  129. /** 
  130.  * 自定义实体类 用于对应数据库表中的字段 
  131.  * @author 廖钟民 
  132.  * time : 2015年1月15日下午12:52:58 
  133.  * @version 
  134.  */  
  135. class Student implements Writable,DBWritable{  
  136.   
  137.     //学生id字段  
  138.     private Integer id;  
  139.     //学生姓名  
  140.     private String name;  
  141.       
  142.       
  143.     //无参构造方法  
  144.     public Student() {  
  145.     }  
  146.   
  147.     //有参构造方法  
  148.     public Student(Integer id, String name) {  
  149.         this.id = id;  
  150.         this.name = name;  
  151.     }  
  152.   
  153.   
  154.     public Integer getId() {  
  155.         return id;  
  156.     }  
  157.   
  158.     public void setId(Integer id) {  
  159.         this.id = id;  
  160.     }  
  161.   
  162.     public String getName() {  
  163.         return name;  
  164.     }  
  165.   
  166.     public void setName(String name) {  
  167.         this.name = name;  
  168.     }  
  169.   
  170.     //实现DBWritable接口要实现的方法  
  171.     public void readFields(ResultSet resultSet) throws SQLException {  
  172.         this.id = resultSet.getInt(1);  
  173.         this.name = resultSet.getString(2);  
  174.     }  
  175.       
  176.     //实现DBWritable接口要实现的方法  
  177.     public void write(PreparedStatement preparedStatement) throws SQLException {  
  178.         preparedStatement.setInt(1, this.id);  
  179.         preparedStatement.setString(2, this.name);  
  180.     }  
  181.   
  182.     //实现Writable接口要实现的方法  
  183.     public void readFields(DataInput dataInput) throws IOException {  
  184.         this.id = dataInput.readInt();  
  185.         this.name = Text.readString(dataInput);  
  186.     }  
  187.       
  188.     //实现Writable接口要实现的方法  
  189.     public void write(DataOutput dataOutput) throws IOException {  
  190.         dataOutput.writeInt(this.id);  
  191.         Text.writeString(dataOutput, this.name);  
  192.     }  
  193.   
  194.       
  195.     @Override  
  196.     public int hashCode() {  
  197.         final int prime = 31;  
  198.         int result = 1;  
  199.         result = prime * result + ((id == null) ? 0 : id.hashCode());  
  200.         result = prime * result + ((name == null) ? 0 : name.hashCode());  
  201.         return result;  
  202.     }  
  203.   
  204.     @Override  
  205.     public boolean equals(Object obj) {  
  206.         if (this == obj)  
  207.             return true;  
  208.         if (obj == null)  
  209.             return false;  
  210.         if (getClass() != obj.getClass())  
  211.             return false;  
  212.         Student other = (Student) obj;  
  213.         if (id == null) {  
  214.             if (other.id != null)  
  215.                 return false;  
  216.         } else if (!id.equals(other.id))  
  217.             return false;  
  218.         if (name == null) {  
  219.             if (other.name != null)  
  220.                 return false;  
  221.         } else if (!name.equals(other.name))  
  222.             return false;  
  223.         return true;  
  224.     }  
  225.   
  226.     @Override  
  227.     public String toString() {  
  228.         return "Student [id=" + id + ", name=" + name + "]";  
  229.     }  
  230.       
  231.       
  232. }  


程序运行的结果是数据库中的数据成功导入到HDFS中,如下:

 

技术分享

 

注:程序运行时,会碰到一个常见的数据库远程连接错误,大致如下:

 

[java] view plain copy  
  1. Access denied for user ‘root‘@‘%‘ to database ‘xxxx’  


原因:创建完数据库后,需要进行授权(在本地访问一般不会出现这个问题)

 

解决方法就是进行授权:

 

[java] view plain copy  
  1. grant all on xxxx.* to ‘root‘@‘%‘ identified by ‘password‘ with grant option;  
  2.   
  3. xxxx代表创建的数据库;  
  4. password为用户密码,在此为root的密码  


另外一个常见的错误就是MYSQL驱动没有导入到hadoop/lib目录下,解决方案有两种,传统的方式我就不多说了,这里说另外一种方式:

(1):把包上传到集群上

 

[java] view plain copy  
  1. hadoop fs -put mysql-connector-java-5.1.0- bin.jar /lib  

(2):在MR程序提交job前,添加语句:

 

 

[java] view plain copy  
    1. DistributedCache.addFileToClassPath(new Path("/lib/mysql- connector-java- 5.1.0-bin.jar"), conf);  

Hadoop中的DBInputFormat

标签:

热心网友 时间:2022-04-08 21:14

提供海量数据存储和计算的,需要java语言基础。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

特点

1、快照支持在一个特定时间存储一个数据拷贝,快照可以将失效的集群回滚到之前一个正常的时间点上。HDFS已经支持元数据快照。

2、HDFS的设计是用于支持大文件的。运行在HDFS上的程序也是用于处理大数据集的。这些程序仅写一次数据,一次或多次读数据请求,并且这些读操作要求满足流式传输速度。

HDFS支持文件的一次写多次读操作。HDFS中典型的块大小是64MB,一个HDFS文件可以被切分成多个64MB大小的块,如果需要,每一个块可以分布在不同的数据节点上。

3、阶段状态:一个客户端创建一个文件的请求并不会立即转发到名字节点。实际上,一开始HDFS客户端将文件数据缓存在本地的临时文件中。

热心网友 时间:2022-04-08 22:32

一个由Apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS。

HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。



扩展资料

Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能地靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。

Hadoop的MapRece功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Rece)到数据仓库里。

参考资料来源:百度百科-Hadoop

热心网友 时间:2022-04-09 00:07

1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

2、Hadoop是一种用于业务分析处理的环境。允许大量的计算算来处理超大型非结构化数据集。这些数据可以来自于各种源,但是最常见的数据是通过作为物联网的一部分的传感器创造的数据。为了让其分析处理是有价值的,Hadoop必须快速处理这些数据集,而且要通过Hadoop分布式文件系统(HDFS)实现。

3、Hadoop架构是一个开源的、基于Java的编程框架,设计用于跨电脑集群来处理大数据。Hadoop架构管理多个节点之间的数据传输,确保即使有一个节点坏掉了,系统仍然保有适当的功能。

4、传统Hadoop存储架构的替代品利用了共享的存储环境,这个环境是计算结点连接的。厂商提供了这种解决方案,既可以用他们自己的HDFS兼容的插件,也可以利用亚马逊简单存储服务(S3)接口的Hadoop存储模式。

5、Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。

热心网友 时间:2022-04-09 01:58

Hadoop是一个分布式计算的解决方案还是一个开源的框架。

Hadoop可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,但不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Maprece(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,拥有更灵活的处理能力,无论任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Maprece代替SQL,SQL是查询语句,而Maprece则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。

想了解更多有关Hadoop的详情,推荐咨询达内教育。达内教育已从事19年IT技术培训,累计培养100万学员,并且独创TTS8.0教学系统,1v1督学,跟踪式学习,有疑问随时沟通;自主研发的26大课程体系更是紧跟企业需求,企业级项目,课程穿插大厂真实项目讲解,对标企业人才标准,制定专业学习计划,囊括主流热点技术,助力学员更好的提高。感兴趣的话点击此处,免费学习一下

热心网友 时间:2022-04-09 04:06

Hadoop是一个用于运行应用程序在大型集群的廉价硬件设备上的框架。Hadoop为应用程序透明的提供了一组稳定/可靠的接口和数据运动。在Hadoop中实现了Google的MapRece算法,它能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。此外,Hadoop还提供一个分布式文件系统用来在各个计算节点上存储数据,并提供了对数据读写的高吞吐率。由于应用了map/rece和分布式文件系统使得Hadoop框架具有高容错性,它会自动处理失败节点。已经在具有600个节点的集群测试过Hadoop框架。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离职几个月公司发短信说我离职生效叫我回去补办离职交接手续怎么 开除员工不办手续违法吗 辞退员工没有办手续违法吗 苹果13/6.1录制两个人脸,后面换锁屏密码认证还有什么提醒,或者是两个人... 很规律很威严的词语是什么 我老了又无能 想有个爱我一辈子的 到今没 就一个人 把爱放心里 用数字... 日语N2 20天复习够吗 为什么泥工先于木工 泥工做好隔多久做木工 从泥工做好到做木工,需要等待多久? 水泥操作人员作业流程是怎样的? 电脑弹出Not enough Disk Space 现在学习hadoop还有优势吗 磁盘空间和硬盘空间有什么区别?怎样清除磁盘空间? disk space exceeds available disk space hadoop主要解决什么问题 windows7中的unallocated diskspace是什么意思呢 hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势? 什么是硬盘空间 Hadoop可以用来做什么 vfp中diskspace()是什么意思 请大家翻译一下这个词diskspace hadoop是干什么用的? Hadoop优缺点分析:适合做什么,不适合做什么 hadoop有哪些优缺点 湖南南岭化工集团有限责任公司董事长是什么行政级别 安徽省长天资产管理有限公司怎么样? 湖南联信科技有限公司怎么样? 长天电工集团有限公司怎么样? 中冶长天是国企还是央企 株冶集团2021年可以长期持有吗?株冶集团业绩未来几年会稳定增长?株冶集团属于啥性质的? 为何要学Hadoop? Storm与Spark,Hadoop相比是否有优势 如何设置硬盘空间? 处理大规模数据hadoop比spark有什么优势 释放硬盘空间的方法 硬盘空间丢失怎么办? 我是怎么玩hadoop的 除了Hadoop 还有哪些分布式计算平台?优势各自是什么 怎样划分硬盘空间? 如何彻底清理硬盘空间 硬盘空间的有问题 公司合并的股东如何处理 两个店合并如何分配股份 两个公司合并具体要怎么操作呢? 假如两家上市公司合并,它们的股票怎么处理? oppo r7用不了手机遥控器?好像没有红外线功能,要怎么样才能用呢? 两公司合并怎么算股份? 公司合并,股权如何分配 两家公司换股合并,合并后股价,怎么计算? 合伙开公司,公司股份应该怎么分配?