MapReduce

Mahout推荐算法之SlopOne

不羁岁月 提交于 2020-05-04 04:38:23
一、 算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分。如下图,估计UserB对ItemJ的偏好 图(1) 在真实情况下,该方法有如下几个问题: 1. 为什么要选择UserA计算? 2. 对大量稀疏的情况如何处理,而这种情况是最为普遍的。 图(2) Item1和item2的相似度:((5-3)+(3-4))/2=0.5 Item1和Item3的相似度:(5-2)/1=3 Lucy对Item1的评估预估计为:((2+0.5)*2+(3+5)*1)/(2+1)=4.333 Item3和Item1的相似度:(2-3)/1=-1 Item3和Item2的相似度:(5-2)/1=3 Make对item3的评分预估计为:((4+3)*1+(3-1)*1)/(1+1)=4.5 通过以上例子可以看出:需要计算item对之间的平均差别,以及item对之间的差别次数。 Mahout给出的训练伪代码: for every item i for every other item j for every user u expressing preference for both i and j add the difference in u’s preference for i and j to an average 推荐伪代码: for

hadoop之HDFS学习笔记(一)

北慕城南 提交于 2020-05-04 04:10:45
主要内容:hdfs的整体运行机制,DATANODE存储文件块的观察,hdfs集群的搭建与配置,hdfs命令行客户端常见命令;业务系统中日志生成机制,HDFS的java客户端api基本使用。 1、什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经无法胜任,需求催生技术,一套用来处理海量数据的软件工具应运而生,这就是大数据! 处理海量数据的核心技术: 海量数据存储:分布式 海量数据运算:分布式 大数据的海量数据的存储和运算,核心技术就是分布式。 这些核心技术的实现是不需要用户从零开始造轮子的 存储和运算,都已经有大量的成熟的框架来用 存储框架: HDFS——分布式文件存储系统(HADOOP中的存储框架) HBASE——分布式数据库系统 KAFKA——分布式消息缓存系统(实时流式数据处理场景中应用广泛) 文件系统中的数据以非结构化居多,没有直观的结构,数据库中的信息多以表的形式存在,具有结构化,存在规律; 查询的时候文本文件只能一行一行扫描,而数据库效率高很多,可以利用sql查询语法,数据库在存和取方便的多。 数据库和文件系统相比,数据库相当于在特定的文件系统上的软件封装。其实HBASE就是对HDFS的进一层封装,它的底层文件系统就是HDFS。

大数据之路week07--day05 (一个基于Hadoop的数据仓库建模工具之一 HIve)

╄→гoц情女王★ 提交于 2020-05-04 03:05:34
什么是Hive? 我来一个短而精悍的总结( 面试常问 ) 1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark)。 2:hive可以使用类sql方言,对存储在hdfs上的数据进行分析和管理。 Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。 Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。 Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。 Hive相当于hadoop的客户端工具,部署时不一定放在集群管理节点中,可以放在某个节点上。 Hive与传统数据库比较 Hive与传统数据库比较 1. 查询语言。类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。 2. 数据存储位置。所有 Hive

hive与数据库的比较

风格不统一 提交于 2020-05-04 01:41:47
除了类似的sql语句,没什么类似之处 1.查询语言:hive的查询语言是类sql 2.数据存储的位置:hive存储在hdfs上,数据库存储在本地文件中 3.数据的更新:hive是针对数仓设计,读多写少,一般不进行数据的更新操作,而数据库要经常进行增删改查的操作 4.索引:数据库有索引,hive无索引,多余少量数据,数据库的时延较低,但是对于大量数据,hive才会体现出其优势 5.执行:hive的执行依赖于mapreduce,而数据路依赖自身的执行引擎 6.执行延迟:看数据量大小 7.可扩展性 8.数据规模 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/4263644

Apache Hadoop 2.9.2 的HDFS High Available模式部署

↘锁芯ラ 提交于 2020-05-03 22:48:31
               Apache Hadoop 2.9.2 的HDFS High Available 模式部署                                         作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。   我们知道,当NameNode进程挂掉后,可以通过SecondName进行补救,我们可以快速进行恢复操作。但是其效率极低,可能等你启动集群成功后,半小时就过去了,会严重影响业务!这个时候我们就需要对NameNode做高可用。我们可以通过双NameNode消除单点故障。 一.HA概述 1>.所谓High Available,简称HA,即高可用(7*24小时不中断服务)。 2>.实现高可用最关键对策略是消除单点故障。HA严格来说应该分成各个组建对HA机制:HDFS对HA和YARN的HA。 3>.Hadoop2.0版本之前,在HDFS集群中NameNode存在单点故障(SPOF) 4>.NameNode主要在以下两个方面影响HDFS集群:   第一:NameNode机器发生意外,如宕机,集群将无法使用,知道管理员重启。   第二:NameNode机器需要升级,包括软件,硬件升级,此时集群也将无法使用。   HDFS HA功能通过配置Active

mongodb的安装与使用(一)

 ̄綄美尐妖づ 提交于 2020-05-03 21:50:16
一、什么是MongoDB ? MongoDB一种由C++语言编写的,是一个基于分布式文件存储的非关系型数据库(NoSql),是一种强大、灵活、可扩展的数据存储方式,因为MongoDB是文档模型,数据结构由键值(key=>value)对组成, 似于 JSON 对象,字段值可以包含其他文档,数组及文档数组。自由灵活很高。 同时对于大数据量、高并发、弱事务的互联网应用,与高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB内置的水平扩展机制提供了从百万到十亿级别的数据量处理能力,还对MapReduce式聚合的支持,以及对地理空间索引的支持。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 二、MongoDB 优缺点 优点 文档结构的存储方式,能够更便捷的获取数据 内置GridFS,支持大容量的存储 海量数据下,性能优越 动态查询 全索引支持,扩展到内部对象和内嵌数组 查询记录分析 快速,就地更新 高效存储二进制大对象 (比如照片和视频) 复制(复制集)和支持自动故障恢复 内置 Auto- Sharding 自动分片支持云级扩展性,分片简单 MapReduce 支持复杂聚合 缺点 不支持事务操作 MongoDB 占用空间过大 (不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了) MongoDB没有如MySQL那样成熟的维护工具

Oozie知识点学习总结(一)

爷,独闯天下 提交于 2020-05-03 21:14:36
Oozie知识框架: 理性认知: Oozie (驯象人) 2、Oozie简介: 一个基于工作流引擎的开源框架,有Cloudera公司贡献给apache,提供对hadoop、Mapreduce、Pig jobs 的任务调度和协调 oozie需要部署到java servlet容器中运行 3、oozie在集群中扮演的角色: 定时调度任务,多任务可以按照执行的逻辑顺序调度 4、oozie的功能模块:4.1: workflow 顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个) 4.2: coordinator 定时触发workflow 4.3: bundle job 绑定多个coordinator 5、Oozie的节点:5.1: 控制流节点(control Flow Nodes)控制流节点一般都是定义在工作流开始或者结束的地方,比如start、end、kill等,以及提供工作流的执行路径机制,如decision,fork,jioin等 5.2、动作节点(Action,Nodes) 就是执行具体任务调度的节点 6、Oozie的安装与部署 6.1、解压Oozie $ tar -zxf /opt/softwares/oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/modules/cdh/ 6.2、Hadoop配置文件修改

Hive笔记之Fetch Task

こ雲淡風輕ζ 提交于 2020-05-02 06:42:14
在使用Hive的时候,有时候只是想取表中某个分区的前几条的记录看下数据格式,比如一个很常用的查询: select * from foo where partition_column=bar limit 10; 这种对数据基本没什么要求,随便来点就行,既然如此为什么不直接读取本地存储的数据作为结果集呢。 Hive命令都要转换为MapReduce任务去执行,但是因为启动MapReduce需要消耗资源,然后速度还很慢(相比较于直接从本地文件中读取而言),所以Hive对于查询做了优化,对于某些查询可以不启动MapReduce任务的就尽量不去启动MapReduce任务,而是直接从本地文件读取。 个人理解: fetch task = 不启动MapReduce,直接读取本地文件输出结果。 在hive-site.xml中有三个fetch task相关的值: hive.fetch.task.conversion hive.fetch.task.conversion.threshold hive.fetch.task.aggr hive.fetch.task.conversion 这个属性有三个可选的值: none:关闭fetch task优化 minimal:只在select *、使用分区列过滤、带有limit的语句上进行优化 more:在minimal的基础上更加强大了,select不仅仅可以是*

【hadoop】MapReduce分布式计算框架原理

青春壹個敷衍的年華 提交于 2020-05-02 03:07:12
PS:实操部分就省略了哈,准备最近好好看下理论这块,其实我是比较懒得哈!!! <?>MapReduce的概述 MapReduce是一种计算模型,进行大数据量的离线计算。 MapReduce实现了Map和Reduce两个功能: 其中Map是滴数据集上的独立元素进行指定的操作,生成键——值对形式中间结果。 其中Reduce则对中间结果中相同“键”的所有“值”进行规约(分类和归纳),以得到最终结果。 <?>如何进行并行分布式计算? 并行计算(如SPARK) 是相对于串行计算而言,一般可分为时间并行和空间并行。时间并行可以看做是流水线操作,类似CPU执行的流水线,而空间并行则是目前大多数研究的问题,例如一台机器拥有多个处理器,在多个CPU上执行计算,例如MPI技术,通常可分为数据并行和任务并行。 分布式计算(如HADOOP) 是相对单机计算而言的,利用多台机器,通过网络连接和消息传递协调完成计算。把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出最终结果。 <?>如何分发待处理数据? 在大规模集群环境下,如何解决大数据的划分、存储、访问管理 <?>如何处理分布式计算中的错误? * 大数据并行计算系统使用,因此,节点出错或失效是常态,不能因为一个节点失效导致数据丢失、程序终止或系统崩溃。因此,系统需要有良好的可靠性设计和有效的失效检测和恢复计算

Hadoop-MR实现日志清洗(四)

▼魔方 西西 提交于 2020-05-02 02:53:36
Hadoop-MR实现日志清洗(四) 6.单机部署Hadoop(伪分布式) 在我们自己购买的阿里云Linux主机上部署单机hadoop,测试我们的mapreduce程序。也可以在windows上安装虚拟机部署。 6.1配置Java环境 下载jdk-8u171-linux-x64.tar.gz后上传到主机,解压缩: tar zxf jdk-8u171-linux-x64.tar.gz 得到文件夹:jdk1.8.0_171 我们把该文件夹放在/opt下 /opt/jdk1.8.0_171 在用户家目录下的配置文件.bash_profile或者.bashrc中新增: export JAVA_HOME=/opt/jdk1. 8 .0_171 export JRE_HOME =/opt/jdk1. 8 .0_171/ jre export CLASSPATH =.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/ lib:$CLASSPATH export PATH =$JAVA_HOME/bin:$PATH 6.2用户配置 我们只是想部署单机并试运行我们的程序,暂定用已有的用户账号,比如udp. 如后续遇到异常,再考虑新增hadoop用户。 6.3安装hadoop 官网下载hadoop-2.7.6.tar.gz,上传到目录