hadoop单机安装记录
引语: 最近想接触一些大数据相关的技术,所以有了这篇文章,其实就是记录一下自己学习hadoop的过程,如果文章中有啥写的不对的地方,还望指正(有java开发经验,但是是大数据小白一只,各位大神轻喷.)我先是在网上搜索了一波大数据应该要学些什么技术,基本上不约而同的都是指向了hadoop. 摘自维基百科:Apache Hadoop链接地址.看完维基百科描述,我们大概知道了hadoop是一个分布式的大数据框架,在深入一些我们会知道它是由很多个组件组成的(比如核心的HDFS,Hadoop Distributed File System,Mapreduce框架,还有很多Hive,HBase等等)。所以hadoop其实也是代指hadoop的一套的生态系统。光说不练假把式,好的我们来看看怎么安装,搭建hadoop的环境呢?
安装步骤: 这里其实有个前提,默认各位大佬的机器上已经安装好了linux和java环境。如果没有可以动动您灵活的手指,在搜索栏敲下“如何安装 ...
hive的安装和配置
hive的安装和配置安装1.先从官网下载hive的压缩包 下载地址这里我下载的是hive-3.1.2
2.配置hive,进入到hive的conf目录下,将默认的配置文件复制一份
123cd hive/conf/cp hive-default.xml.template hive-site.xmlvim hive-site.xml
配置如下:
1234567891011121314151617181920212223242526<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration> <property> <name>javax.jdo.option.ConnectionURL</name> ...
记一次线上频繁FGC的事件和解决方式
### 问题描述: 早上去公司上班,突然就邮件一直报警,接口报异常,然后去查服务器的运行情况,发现java的cpu爆了.接着就开始排查问题
问题解决过程:1.先服务器(centos7)上,使用了top和uptime命令,发现时java的cpu爆了,超过100%了,导致后续的服务无法正常提供;2.调整了负载均衡,下掉了有问题的那几台机器;3.使用jps找到了运行着的tomcat的pid,这里假设为10086;4.使用jstat -gcutil 10086 500 10 (意思是对pid为10086的线程,每500ms显示各分代的内存使用情况), 这里给一下部分jvm的参数设置,如下:可以看到对新生代使用的是ParNew收集器,对老年代使用的是CMS收集器,CMSInitiatingOccupancyFraction=80说明当使用率超过80%的时候触发垃圾回收。然后发现,线上老年代一直超过80%的使用率,几乎一秒不到就进行了一次FGC,这么频繁的FGC导致了服务无法正常运行;5.使用jmap -histo 查看了是哪些对象的数量最 ...
mybatis流式查询
导语:有些时候我们所需要查询的数据量比较大,但是jvm内存又是有限制的,数据量过大会导致内存溢出。这个时候就可以使用流式查询,数据一条条的返回,处理完一条在拿下一条数据,这样每次在内存里面的数据其实很小,不会导致内存溢出。本文里面会讲到jdbc的流式查询和mybatis的流式查询。
jdbc流式查询:jdbc的流式查询需要在生成PreparedStatement的时候设置三个参数。如下:
12PreparedStatement stmt = jdbcTemplate.getDataSource().getConnection().prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);stmt.setFetchSize(Integer.MIN_VALUE);
主要使用到的是java.sql.Connection的prepareStatement方法。
1PreparedStatement prepareStatement(String sql, int resultSetType, ...
hadoop实现基于物品的协同过滤推荐算法ItemCF_理论部分
基于物品的协同过滤推荐算法 在我们日常浏览各种网站的时候,经常会受到该网站或者应用的推荐,比较典型的例子就是在淘宝天猫上买东西的时候,点击商品,搜索商品或者付款完成后,我们会发现系统给我们列举出了很多相似的物品,或者一些可能相关的物品。比如你要买牙膏,可能点了一款牙膏,它就给你推荐好多款牙膏,可能还会有牙刷,牙线等其他东西。那么我们不禁想问,这个推荐算法它是怎么实现的呢?我们今天就来简单的讲讲推荐算法。 首先我们知道系统推荐的东西,会和我们想要找的物品很相似,所以这个推荐算法的本质就是在于,根据你搜索点击输入的信息,去给你找到相似的东西。这里我们先提出一个概念:相似度。我们先来看看二维的世界里,相似度是怎么定义的,也就是我们这片博文要讲的余弦相似度。在二维的平面中,有两个向量,a(x1,y1),b(x2,y2),它们的相似度就是他们之间的夹角θ的余弦值(cosθ),当它们夹角越小,cosθ就越逼近1就说明它们相似度越高。
推广到多维向量:a(a1,a2…an),b(b1,b2…bn)$cosθ& ...
堆污染又是啥
最近在看《effective java》的时候,看到一个新鲜词,“堆污染”。乍一看好像是个很高端大气上档次,想起来应该跟jvm关系比较大的概念。后来学习发现是编写代码不规范可能导致的一个异常现象。下面我们一起来学习下,首先这个东西会牵扯到三个东西,第一个是可变参数,第二个是泛型,第三个是@SafeVarargs注解。前两个咱们知道是java5中加入的新特性。第三个是在java7中加入的新注解。
问题展示:我们先来看一段代码,然后看下编译器给了什么提示public static List asList(T… a) { return null;}
1234567891011可以看到编译器直接提示了这个方法可能导致heap pollution,即使这个方法仅仅就返回一个null。只要参数列表同时是泛型和可变参数,就会出现这样的警告,提示开发者这里可能出现问题。为了解决这个烦人的提示,所以java7增加了@SafeVarargs的注解来抑制这个提示。我们再来看两个例子,帮助理解一下当泛型和可变参数一起的时候可能会带来的问题:示例一:第一个例子来自于@SafeVarargs注解中的 ...
oop-klass模型
jvm对象模型可以从hotspot7的源代码的github上获取到进行学习.注:本文内容都是以jdk7对应的hotspot虚拟机为基础进行分析的.
一.oop-klass的层级关系首先,今天讲的东西是java对象在jvm层面的具体映射,它叫做oop-klass模型。咱们先来看看这个模型是怎么组成的。从oopsHierarchy.hpp的源代码,具体可以点进入到官方的github仓库里面看看,我这里放的是我fork的链接。(读者:为啥不直接放官方的链接,我:咱这不是心存私心引一下流量到自己的github嘛,虽然并没有啥内容可看,捂脸哭表情)。好了废话时间结束,咱们先看看jvm对象模型的层次结构。
引用Hotspot实战里面的一张图,oop各模块的组成:
oop层级部分:
klass层级部分:上来就是三张图,c++写的,虽然咱们不能完全看明白,但是从定义属性这些大致也有了个了解,这个模型是由oop类和klass组合起来的,然后这两个大类下面又有很多的子类。
二.oop层级部分:看完了jvm整个模型的构成,我们先来看看oop部分的作用。参考hotspot源码中的oop.hpp部分.
...
hadoop实现矩阵相乘
hadoop 实现矩阵相乘我们大学里学过矩阵相乘,如下,当两个矩阵A,B,A的行等于B的列时可以相乘。然后乘积是A的行乘以B的列得出。我们今天用hadoop来实现一下矩阵的乘法。$$ \left[ \begin{matrix} A1 & A2 & A3 \ A4 & A5 & A6 \ A7 & A8 & A9 \end{matrix} \right] X \left[ \begin{matrix} B1 & B2 & B3 \ B4 & B5 & B6 \ B7 & B8 & B9 \end{matrix} \right]$$
计算过程是A行乘以B列,我们可以将B先转置(行列互换),然后在用A行乘以B行可以得出结果,具体步骤如下:1.将B(下面可以理解为右边的矩阵)转置,结果输出B’2.AxB’(B’的结果放在hdfs的文件系统缓存中),输出结果
我们先看一下例子的两个矩阵数据$$ \left[ \begin{ma ...