分布式计算

基于hadoop构建智能推荐系统:第1篇 用户行为数据分析并导出到hdfs

别等时光非礼了梦想. 提交于 2020-04-22 04:51:20
这个分类 我主要想分享基于 hadoop 构建智能推荐系统的过程思路、程序设计和系统架构方面的一些技巧心得,至于 hadoop 、 sqoop 、 hbase 的安装和使用我就不多讲了,网上已经有很多这方面的文章了 让我们直奔主题吧。 1 、 我们要搭建一个智能推荐系统最重要的是什么呢?不是算法、也不是系统的本身,最关键是准确分析用户的行为数据,最终得出一个用户偏好表。有了这个用户偏好 表,我们可以做的事太多了,比如计算用户的相似度、计算物品的相似度、把用户按照行为进行聚类。。。但是这一切的前提都必须有一个“用户偏好表”(如图表 1-1 )。 图表 1-1 用户偏好表 Uid (用户 id ) Itemid (物品 id ) Preference (偏好值) Timestamp (时间戳) 1001 1005 4.5 123278545 1002 1008 3.5 123577865 1001 1008 5.0 123478588 2 、 (下面我将以视频网站的智能推荐系统为例子) 为了得到这样的一张表,我们首先要对用户的行为进行分析, 视频网站 的用户行为一般为 观看记录、评分记录、顶 / 踩、评论记录。。。 我们按照预先设定的权重(图表 2-1 ),将这些行为数据进行简单的权重相加,得出一个比较粗糙的偏好评分。 图表 2-1 行为权重(后面的行为记分 覆盖前面的行为记分) 行为

3月14日圆周率日—使用并行计算求圆周率π

非 Y 不嫁゛ 提交于 2020-04-18 00:20:00
关于圆周率大家再熟悉不过了: 我们从课本上学习到早在一千多年前,祖冲之将圆周率计算到3.1415926到3.1415927之间…计算机诞生后,计算圆周率被用来检测计算机的硬件性能,昼夜燃烧cpu看会不会出问题…另外一些人也想看看这个无限延伸的神秘数字背后是否有规律,能发现一些宇宙的秘密… 提起圆周率,不能不提及Fabrice Bellard,他被认为是一位计算机天才,在业界有着重要的影响。1996年他编写了一个简洁但是完整的C编译器和一个Java虚拟机Harissa。Fabrice Bellard发明的TinyCC是GNU/Linux环境下最小的ANSI C语言编译器,是目前号称编译速度最快的C编译器。Fabrice Bellard杰作众多且涉及广泛,1998年编写了一个简洁的OpenGL实现TinyGL,2003年开发了Emacs克隆QEmacs,2005年还设计了一个廉价的数字电视系统。 Fabrice Bellard使用一台普通的台式电脑,完成了冲击由超级计算机保持的圆周率运算记录的壮举,他使用台式机将圆周率计算到了小数点后2.7万亿位,超过了由目前排名世界第47位的T2K Open超级计算机于去年8月份创造的小数点后2.5万亿位的记录。 Bellard使用的电脑是一台基于2.93GHz Core i7处理器的电脑,这部电脑的内存容量是6GB,硬盘则使用的是五块RAID

Java开发人员的升级之路

有些话、适合烂在心里 提交于 2020-04-07 05:34:06
第一部分:对于参加工作一年以内的同学。恭喜你,这个时候,你已经拥有了一份Java的工作。 这个阶段是你成长极快的阶段,而且你可能会经常加班。但是加班不代表你就可以松懈了,永远记得我说的那句话,从你入行那一刻起,你就要不停的学习。在这一年里,你至少需要看完《Java编程思想》这本书。这本书的内容是帮助你对于Java有一个更加深入的了解,是Java基础的升级版。这本书很厚,当初看这本书,我花了整整三个月。正常速度的话,应该可以在半年左右看完。我这里不要求过高,只要你在一年以内把这本书看完即可。当然了,我所说的看完,是充分吸收,而不是读一遍就完事了,因此有些内容你可能会看不止一遍。总而言之,这个阶段的核心学习思想就是,在工作中实践,并且更加深入的了解Java基础。 第二部分:对于参加工作1年到2年的同学。这部分时间段的同学,已经对Java有了一个更加深入的了解。 但是对于面向对象的体会可能还不够深刻,编程的时候还停留在完成功能的层次,很少会去考虑设计的问题。于是这个时候,设计模式就来了。我当时看的是《大话设计模式》这本书,并且写了完整版的设计模式博客。因此,我要求大家,最多在你工作一年的时候,必须开始写博客,而设计模式就是你博客的开端。 请记住,我所提的基本都是最低要求,因此不要有任何松懈的心理,否则五年后,你不要去羡慕别人高于你的工资,也不要去羡慕别人进入了某公司。这一年

Java程序员的成长之路

孤街浪徒 提交于 2020-04-07 05:24:31
阅读本文大概需要 8.2 分钟。 tips:虽然题目是写的Java程序员,但对其他语言的开发来说也会有借鉴作用。 本篇介绍的是大体思路,以及每个节点所需要学习的书籍内容,如果大家对详细的技术点有需要,欢迎留言,后续我在写一篇每个阶段需要学习掌握的技术点。 工作一年(以内) 恭喜你,这个时候,你已经拥有了一份Java的相关工作。对于刚步入职场的新人,不要浮躁,用心提升自己,早点来公司晚点再离开,相信我,对你会有好处的。这个阶段是你成长极快的阶段,而且你可能经常加班(没加过班的程序员不是好程序员)。 但是加班不代表你就可以松懈了,互联网这个行业,技术迭代的速度非常快,稍不留神你可能就out了。我还记得某位大佬说的那句话,从你入行那一刻起,你就要不停的学习,才能跟上时代步伐,我给自己定义的一个标签就是「终身学习者」。 在这一年里,你尽量可以看完《Java编程思想》这本书,该书的内容是帮助你对于Java有一个更加深入的了解,是Java基础的升级版。老实说,这本书厚的很,当初看这本书,花了整整二个多月,通读了一遍。正常速度,应该可以在半年左右看完,不过内容特别深涩难懂,对大部分人来说都是一个考验。在这一年中多看几遍,吸收尽可能多的知识,最好充分吸收!后续放置在案头上,平时遇到的问题,都可以到书中找找,把它当做字典来用。 总而言之,这个阶段的核心学习思想就是,在工作中实践

分布式计算第二次作业

社会主义新天地 提交于 2020-03-12 16:34:36
题目 实现一个支持并发服务的 网络 运算 服务器程序。该服务器能够同时接收来自于多个客户端的运算请求,然后根据运算类型和请求参数完成实际的运算,最后把运算结果返回给客户端。 客户端 import java . io . IOException ; import java . net . * ; public class Client { private DatagramSocket datagramSocket ; private InetAddress address ; private int port ; public Client ( ) { this ( 18888 , "127.0.0.1" ) ; } public Client ( int port , String netAddress ) { try { this . port = port ; datagramSocket = new DatagramSocket ( ) ; //发送端口可以不指定 address = InetAddress . getByName ( netAddress ) ; } catch ( SocketException e ) { e . printStackTrace ( ) ; } catch ( UnknownHostException e ) { e .

“大数据”领域里的“不明觉厉”

a 夏天 提交于 2020-02-29 02:07:24
大数据(Big Data) 大数据,官方定义是指那些数据量特别大、数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理。大数据的主要特点为 数据量大(Volume) , 数据类别复杂(Variety) , 数据处理速度快(Velocity) 和 数据真实性高(Veracity) ,合起来被称为4V。 大数据中的数据量非常巨大,达到了PB级别。而且这庞大的数据之中,不仅仅包括结构化数据(如数字、符号等数据),还包括非结构化数据(如文本、图像、声音、视频等数据)。这使得大数据的存储,管理和处理很难利用传统的关系型数据库去完成。在大数据之中,有价值的信息往往深藏其中。这就需要对大数据的处理速度要非常快,才能短时间之内就能从大量的复杂数据之中获取到有价值的信息。在大数据的大量复杂的数据之中,通常不仅仅包含真实的数据,一些虚假的数据也混杂其中。这就需要在大数据的处理中将虚假的数据剔除,利用真实的数据来分析得出真实的结果。 大数据分析(Big Data Analysis) 大数据,表面上看就是大量复杂的数据,这些数据本身的价值并不高,但是对这些大量复杂的数据进行分析处理后,却能从中提炼出很有价值的信息。对大数据的分析,主要分为五个方面: 可视化分析(Analytic Visualization) 、 数据挖掘算法(Date Mining Algorithms) 、

FHE、MPC、zk-SNARK有何不同

╄→尐↘猪︶ㄣ 提交于 2020-02-29 01:44:00
隐私计算技术是密码学的一个前沿发展方向,填补了数据在计算环节隐私性问题的空白,将基于密码学的信息安全体系打造成完整的闭环,为云计算、分布式计算网络和区块链等技术的应用提供隐私性基础。本专题将简述隐私计算技术,并分析其起源、技术方向与应用前景。 随着信息技术的不断发展,数据逐渐成为政府、企业与个人的重要资产,其发掘、存储、处理与使用变得愈发重要,逐渐产生了隐私性需求。隐私计算,是一类数据或计算方法保持加密状态,不泄露给其他合作方的前提下,进行计算合作的技术,其出现填补了密码学出现以来在信息的处理和使用环节的空白。 目前阶段,密码学层面的隐私计算主要有全同态加密、多方安全计算、零知识证明等主要的技术方向。   满足同态性的加密函数能够实现在不解密原始数据的前提下对加密数据进行某一运算,提供了对加密数据的计算能力。全同态加密算法则是指给定任意一种运算规则,可以通过算法构造出对加密数据的相应运算规则,并满足同态性。全同态加密是相对基础性的隐私计算技术,应用范围较广,但其目前计算效率较低,并存在一定局限性。   安全多方计算解决如何在参与计算的各方不泄露自身输入、且没有可信第三方的情况下安全地计算约定的函数并得到可验证结果的问题。安全多方计算主要解决的主要目的是解决互不信任的参与方在保护隐私的前提下协同计算的难题。其自身同样存在局限性,不能保证参与者的诚实度,也无法阻止参与者恶意输入。  

分布式计算框架

北战南征 提交于 2020-02-25 22:21:23
MapReduce 简介 概念 面向批处理的分布式计算框架 一种编程模型: MapReduce程序被分为Map(映射)和Reduce(化简)阶段 核心思想 分而治之, 并行计算 移动计算而非移动数据 特点 MapReduce有几个特点: 移动计算而不移动数据:分布式计算,计算跟着数据走,数据存放在哪就在哪里进行计算,极大的减少了IO的开销。 良好的扩展性:分布式计算框架拥有相当良好的扩展性,随着节点数量的增加,单个节点的计算量减小,整体的计算能力近乎线性的递增。 高容错性:计算任务失败,会自动恢复计算,拥有良好的容错性。 状态监控:提交任务之后,任务具体执行在哪个节点,具体执行到哪个阶段,在后台或者监控界面,我们都能实时的进行监控。 适合于海量数据的离线批处理:MapReduce在设计之初的目标就是面向离线批处理,特别是大吞吐量的离线处理场景,更适合于MapReduce。 降低了分布式编程的门槛:大部分操作MapReduce已经实现,我们仅仅需要在特定的部分编写我们自己的业务逻辑,极大的减少了工作量,同时也降低了编程的门槛。 MR原理 1. 作业(job):作业是客户端提交请求执行的一个单元,它包括数据、计算框架以及一些配置信息等。 2. 任务(task):是作业细分之后的细分工作单元,如MapReduce中的Map Task和Reduce Task。

大数据系列之分布式计算批处理引擎MapReduce实践-排序

人走茶凉 提交于 2020-01-30 13:55:20
清明刚过,该来学习点新的知识点了。 上次说到关于MapReduce对于文本中词频的统计使用WordCount。如果还有同学不熟悉的可以参考博文 大数据系列之分布式计算批处理引擎MapReduce实践 。 博文发表后很多同学私下反映对于MapReduce的处理原理没有了解到。在这篇博文中楼主与大家交流下MapReduce的数据处理原理及MR中各角色的职责。 文末还有示例代码讲解。。 1.MapReduce中的数据流动 最简单的过程: map - reduce 定制了partitioner以将map的结果送往指定reducer的过程: map - partition - reduce 增加了在本地先进行一次reduce(优化)的过程: map - combine - partition - reduce 2.Partition的概念和使用 得到map产生的记录后,他们该分配给哪些reducer来处理呢?hadoop默认是根据散列值来派发,但是实际中,这并不能很高效或者按照我们要求的去执行任务。例如,经过partition处理后,一个节点的reducer分配到了20条记录,另一个却分配到了10W万条,试想,这种情况效率如何。又或者,我们想要处理后得到的文件按照一定的规律进行输出,假设有两个reducer,我们想要最终结果中part-00000中存储的是”h”开头的记录的结果,part

分布式计算框架MapReduce

笑着哭i 提交于 2020-01-24 15:09:07
编程模型之核心概念 Split InputFormat OutputFormat Combiner Partitoner 编程模型之执行步骤 准备map处理的输入数据 Mapper处理 Shuffle Reduce处理 结果输出 通过 InputFormat 读入HDFS上的文件 通过 Split 进行分片后,用 RecordReader 读取进来 input(k,v) pairs ⇒ map ⇒ intermediate(k,v) pairs 通过 Partitioner 进行分区后,按照一定的规则进行 Shuffling,然后按字典排序 通过 Reduce 后,OutputFormat 写回到 HDFS 上 来源: CSDN 作者: senga07 链接: https://blog.csdn.net/gates0087/article/details/104079579