Hadoop执行reduce失败,提示Container is running beyond virtual memory limits. Killing container. Exit code is 143 问题的可能解决办法

提示信息如下:

18/01/01 21:11:40 INFO mapreduce.Job: Task Id : attempt_1514811676808_0001_m_000000_0, Status : FAILED
[2018-01-01 13:11:38.817]Container [pid=6319,containerID=container_1514811676808_0001_01_000002] is running beyond virtual memory limits. Current usage: 236.3 MB of 1 GB physical memory used; 2.1 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1514811676808_0001_01_000002 :
...
[2018-01-01 13:11:38.872]Container killed on request. Exit code is 143[2018-01-01 13:11:38.879]
[2018-01-01 13:11:38.922]Container exited with a non-zero exit code 143. [2018-01-01 13:11:38.924]
...

一大片信息,一直反复的出现,最后大多数次数会执行失败了… 还是有那么几次成功的…

开始看提示,“beyond virtual memory limits”,貌似是说内存不够,好吧,加内存,因为是开的虚拟机,就加了几百兆,发现还是出问题,然后加1G,最后加到电脑的内存都被吃完了,依然出现这个错误…

就很纳闷了,怎么回事,我就执行了一个 wordcount 的示例,怎么会吃掉几个G的内存,hadoop也太能吃了吧,内存终结者吗???wordcount 我用JAVA写也就十几M内存顶天了吧…

继续阅读

执行hadoop命令警告 Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil to method sun.security.krb5.Config.getInstance() 可能的解决办法

具体警告如下:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/home/hadoop/hadoop-2.9.0/share/hadoop/common/lib/hadoop-auth-2.9.0.jar) to method sun.security.krb5.Config.getInstance()
WARNING: Please consider reporting this to the maintainers of org.apache.hadoop.security.authentication.util.KerberosUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

不多说了,原因可能是 JDK 的原因,我用的 JDK9 ,换成 JDK8 问题解决…

fuck JDK9…

Visual Studio Code离线插件安装

这里说的离线,是指本机无法上网无法使用VSCode下载插件,但是其他的电脑可以上网下载插件,然后将其他电脑下载的插件安装到本机!

是不是觉得很无语,为什么要用不能上网的电脑来用VSCode写代码… 但是当你遇到和我的公司一样SB的公司的时候,就知道了:本机代码全部加密,无法上网,自己的电脑能上网,但是不能用来拍代码… 就是这么的SB!

这个时候,如果能够将我的电脑的插件离线安装到公司电脑就好了,不负所望,微软这次不坑爹,插件是绿色的,可以互相拷贝使用,位置如下列表,只要将需要的插件拷贝到对应的位置就好了,再进入VSCode的插件列表点击“重新加载”就可以使用了!

  • Windows %USERPROFILE%\.vscode\extensions
  • Mac ~/.vscode/extensions
  • Linux ~/.vscode/extensions

参考来自:https://code.visualstudio.com/docs/editor/extension-gallery?pub=peakchen90&ext=vue-beautify#_common-questions

Pinterest也被墙了…

状态

Pinterest也被长城墙了… 很是可惜啊,惋惜2秒钟…

还好我会科学上网,一般我会设置PAC模式,于是我把pinterest.com加到pac列表中,虽然www.pinterest.com可以访问了,但是始终无法登陆,总是提示“开启javascript,清除缓存,检查账户是否过期,更换浏览器”,作为一个资深程序员我居然信了!想想真是耻辱啊… 还真那么回事的一样一样的检查了,的确没有问题,但是还是无法登陆…

于是思考着,是不是pinterest不止这一个域名被墙了!

是时候拿出点程序员该有的样子了,F12,调试控制台出来吧,啊哈哈哈哈…

发现登陆的时候有个地址始终报红,这个地址是pinimg.com,原来是这样,于是将pinimg.com也加入到pac列表中,就正常了!

作为喜欢看图的程序员,我骄傲,我自豪,啊,真是快乐的一天!

新Gravatar镜像地址配置

昨日打开juwends.com,发现gravatar头像貌似没有走缓存地址,导致网页要加载很久,于是查看缓存地址,原来因为没有备案被屏蔽了…

于是找了另一个地址,就是gravatar国内的镜像:secure.gravatar.com

设置方式为,将function.php中原来的代码:

function gravatar_cache($avatar){
$avatar = preg_replace( "/http:\/\/(www|\d).gravatar.com/","http://gravatar.hechaocheng.cn",$avatar );
$avatar = preg_replace( "/\?s\=/",".png?s=",$avatar );
return $avatar;}
add_filter( 'get_avatar', 'gravatar_cache' );

替换为:

function unblock_gravatar( $avatar ) {
$avatar = str_replace( array( 'http://www.gravatar.com', 'http://0.gravatar.com', 'http://1.gravatar.com', 'http://2.gravatar.com' ), 'https://secure.gravatar.com', $avatar );
return $avatar;
}
add_filter( 'get_avatar', 'unblock_gravatar' );

新地址替换了一个数组 array( ‘http://www.gravatar.com’, ‘http://0.gravatar.com’, ‘http://1.gravatar.com’, ‘http://2.gravatar.com’ ),将数组中出现的连接替换成 https://secure.gravatar.com

至于为什么是数组,据这里介绍是因为数组中的连接是被墙了的,都需要替换成国内的镜像,《天朝Gravatar头像缓存站,小伙伴再也不会觉得我的头像屌了》是旧版设置,旧版设置不能再用了哦!

SSL证书风波之StartSSL申请的免费证书不能使用了

前几日,将谷歌浏览器从52升级到最新版58(话说是有多久没有升级了),我的站点juwends.com居然被报告不安全,原因是https证书无效了。

当时就懵逼了,去年12月才申请的3年有效期的ssl证书居然被新版的谷歌浏览器认为失效,话说之前我是有看到过关于赛门铁克的证书可能会被谷歌浏览器提前失效,但是我的是StartCom颁发的证书啊。

于是果断网上查,原来在16年10月的时候火狐谷歌苹果就对沃通和其悄悄收购的证书公司StartCom进行了惩罚,原因是他们不按照规定颁发证书… 而且谷歌在56版就开始对StartCom颁发的部分证书进行了失效处理。

而我,当时还是用的52版,所以就以为证书好好的,而最近才升级到了最新版,才发现问题… 期间已经有半年都是处于被通知不安全的,如果访问者安装了56及更高版本,那么我的站点就会屏蔽,大部分访问者就会止步于此… 真是细思极恐啊!(说的跟真的有很大流量似的…)

也就是说StartCom和沃通的证书都不能再用了,找其他的免费证书吧,搜索后发现阿里云和腾讯云,还有一家叫TrustAsia的都可以颁发免费证书,因为域名是阿里云的,找阿里云申请免费证书应该方便些,于是找到了一篇教程《在阿里云申请Symantec免费SSL证书操作流程》,按照方法顺利申请到了免费证书,证书是由赛门铁克颁发的1年期的DV证书,亲测可以使用,不过估计不到1年就会过期,所以谷歌浏览器一定要保持最新版的,如果发现过期再次申请即可。

补充一个:阿里云的“证书服务”在“安全(云盾)”->“云盾控制台概览”->“证书服务”栏目下

Echarts自定义Legend按钮实现以及Demo

前段时间,一个朋友问能不能做出这样的Echarts图,大概是这样:

他有个需求,有4条线分别代表:缓存100时方案A的曲线,缓存200时方案A的曲线,缓存100时方案B的曲线,缓存200时方案B的曲线,按常规模式这个时候Echarts的Legend会有4个按钮(缓存100方案A,缓存200方案A,缓存100方案B,缓存200方案B),它们分别控制一条线,但是他不想这样,他想要这样的4个按钮:缓存100,缓存200,方案A,方案B,每个按钮可以关闭对应的两条线。相当于他想要的展示维度和Echarts不一样,他的展示效果在分类上更合理。

当时之前我也没有做过,我也不知道能不能实现,直到后面有一天突然看到Echarts3.0的API,发现Echarts是提供了Legend点击事件方法的!然后马上去翻看2.0的,结果发现在用户手册上方一点的位置也明确写了的,只是从来没有注意到罢了…(-_-|||),不仅如此,Echarts还提供了线条开关的API!

既然这样,那这个需求就有可能实现了,可以自定义4个Legend按钮,然后在自己写方法来控制曲线,于是,没过多久,就有了这篇文章,先看看DEMO。下面开始解释代码:

继续阅读

Eclipse导出javadoc报错“编码GBK的不可映射字符”解决办法

状态

前几天导出javadoc,报错“编码GBK的不可映射字符”,其实我知道是字符集没有设置正确,但是不知道哪里设置…

这种情况最恼火,于是百度之,找到了方法:

在导出javadoc的对话框中,一路Next,直到最后一个对话框界面,会看到上面有行文字:

VM options (prefixed with ‘-J’, e.g. -J-Xmx180m for larger heap space):

就在这句话下面的输入框中输入:

-encoding UTF-8 -charset UTF-8

这样点击Finish之后,就可以正常生成javadoc了。

Echarts长图全图打印方案以及Demo

前面使用echarts做统计图表,做出来的echarts图横向宽度挺大的,都超出页面了,然后我设置了一个横向滚动条。

然后!需求要求有打印按钮,要将图表打印出来(突然好想砍掉需求方)… 然后悲催的发现,图表滚动条所到的地方才能被打印出来,然后其他的地方就被遮住了,就像下面那个样子…

有滚动条的echarts图打印不全

有滚动条的echarts图打印不全

怎么办呢?突然想到echarts可以转换成图片的,于是想到了可以在打印前将echarts转换为图片放在页面,然后缩放到指定宽度,然后再打印,打印完成后再切换回来!于是开始试验,最后发现方案可行,就有了下面的代码。

继续阅读

Win10配置IIS网站后图标旁出现红色小叉无法访问网站的解决方法

Window上,在本地搭建html访问平台怎么最快,当然是Windows自带的IIS最快,控制面板->管理工具->IIS管理器,创建一个网站,然后简单的配置一下,再把html文件拷进去,浏览器就可以直接访问了,杠杠的。

可是就在不久前,我就这么玩儿,但是创建的网站的图标旁边有个小红叉,并且启动网站后也无法访问,于是网上查了下,网上千奇百怪的答案都有,有的人并不懂,但也要出来凑凑热闹,天朝的群众就是多,什么都要去凑凑,对需要解决问题的人来说完全就是干扰嘛,所以说并不是所有的答案都是正确的,只有一个个的试,最后发现原来是IIS主键配置不正确。下面将正确的配置方法记录下来:

1,控制面板->程序和功能->启用或关闭windows组件

2,按照下图找到对应的选项并勾上,然后点击确定

继续阅读

https部署折腾(三):StartSSL申请免费SSL证书的方法

2017.5.4 juwends.com通告:2016年10月21日之后在StartSSL上申请的免费证书已经被谷歌浏览器认为无效了,所以没有必要再在StartSSL上申请免费证书了,下面的文字看了也没有用了,请看这里转投阿里云下,文中的教程连接传授可以免费申请到有效的赛门铁克1年有效期的DV证书的方法!!!本着不坑大家的宗旨特此通告…

之前有个网站可以申请免费的ssl证书,后来不知道为啥不提供免费证书的颁发了。不过后来又找到一个网站可以颁发免费证书,这个网站的域名是startssl.com,不用想都知道,这个网站是全英文的,所以这里做一个介绍,如何在startssl上申请ssl免费证书。

要申请ssl证书需要3样东西,分别是域名、域名的注册邮箱,以及证书申请文件(csr文件,由私钥生成)。不知道怎么生成csr文件看《OpenSSL通过PEM格式私钥生成用于申请SSL证书的CSR文件》,里面有一些公钥私钥的介绍,以及csr生成的方法。

如果上述3样东西都准备齐全,那么让我们先打开startssl吧。然后按下面步骤操作:

操作流程大概是:注册StartSSL用户 -> 验证域名所有权 -> 提交申请证书的资料 -> 下载证书,下面就开始吧:

1,点击首页那个巨幅图片右边的大于符号图标,出现下面那个样子的图,然后点击右边那个椭圆条,“Start Now for Free SSL Certificate”。

startssl申请免费ssl证书的方法

startssl注册入口

继续阅读

https部署折腾(二):OpenSSL通过PEM格式私钥生成用于申请SSL证书的CSR文件

CSR,全称Certificate Signing Request,译为证书签发请求,就是用于申请证书的,放在文本文件中的,一串字符,获取方式通过私钥生成。

既然要使用SSL加密,那么需要了解非对称加密,这个其实比较理论,就大概介绍一下。

有种算法叫做RSA非对称算法,通过这个算法可以获得两个密钥,一个叫公钥,用于加密数据,一个叫私钥,用于解密数据,这两个密钥是不同的,所以叫做非对称加密,好处是只用把公钥给加密方,一旦加密后只有私钥才能打开,而私钥是不会公开的,所以相对安全,即比对称加密安全(加解密的密钥相同)。而SSL就是利用了非对称加密(当然,也使用到了对称加密,这里只说非对称加密),如果要使用SSL,首先需要一对密钥,即公钥和私钥。那么密钥和CSR以及SSL证书有什么关系呢?其实简单来说SSL证书就是公钥,而CSR用于向证书颁发商申请SSL证书,而CSR是通过私钥生成的,大概就是:私钥 -> CSR -> SSL证书(公钥+站点信息等其他信息),这样一说整个线路就连贯起来了吧。

那么为什么要使用SSL证书呢,既然我们可以自行生成私钥和公钥(证书),为什么不直接使用呢?就是因为证书没有经过认证,是可以随意篡改的,如果在数据传输环节,有人更改了证书,即更改了公钥,那么数据落入他人之手后,就可以利用生成伪造证书的私钥进行解密,这样根本就是不安全的,而如果证书认证过,就无法被篡改,因为一旦篡改,浏览器就会提示证书不安全了。所以,要使用认证的证书。

(好吧,理论还是不在行,上面的话看看就好,具体的请百度)

下面来说说怎么生成私钥对,以及如何生成CSR文件:

继续阅读

https部署折腾(一):.htaccess配置重定向参数RewriteCond和RewriteRule解释

对于完成一件比较麻烦的事,做完后是一定要写教程的,呃,其实应该是记录过程,也不是想教谁,只是希望以后自己再用的时候还找得到用法。话说过程是惊险刺激的,有时兴奋,有时却恨不得去屎… 而扫尾工作就是最枯燥到的了,比如现在… 但是事后不总结、不记录,那是永远无法成长的。就像我这次部署https一样,其实那篇发泄文(见《吐个槽,糟心的一天》)写完就打算放弃部署https了,结果文章结尾的时候提示了自己一个很重要的问题,最后找到了方法部署成功… 这个后期再说。

今天玩了下.htaccess,所以提前把这个写了,相当于是部署https的周边技术吧,有时间写一点,最后再汇总成如何部署https,我觉得这样不错,好了,说了这么多闲话了,开始教程吧。

.htaccess对于我来说就是用来做301重定向的,它的主要作用貌似也就是这个了。主要靠写在文件中的语句执行重定向,比如

<IfModule mod_rewrite.c> 
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

这个是一个基本配置,将“/”和404重定向到/index.php去,我们可以看到语句有好几种,比较关键的是RewriteCond和RewriteRule。

先举个栗子:

RewriteCond %{HTTP_HOST} ^(juw)end(s)\.com.*$ [NC]
RewriteRule aa(.*)cc(.*)$ http://ww\./$2/$1/%1/%2 [R=301,L]

看起来是有点复杂,先看结果:

网址输入地址:juwends.com/aaa/bbb/ccc/?p=1
重定向地址:http://ww.///a/bbb/c/juw/s?p=1

继续阅读

吐个槽,糟心的一天

状态

今天搞了一天的https配置,证书也申请了,CDN也配了,最后配置上https用不上… 结果啥都没有搞出来… 真是很糟心的一天…

我用的是阿里云的虚拟主机,要使用https需要配置阿里云的CDN,于是开通了CDN。

还需要证书,又去startssl申请了免费证书,配置到CDN后,以为输入https://www.juwends.com就可以进入https模式了… 哪知各种问题,本该使用https的css文件依然是http… 还有好多文件url也是那样… 后台就更无语了,直接无限重定向,完全进不去…

然后,我就把整个站点下载到本地,在本地尝试配置https,结果配置完后什么问题都没有!!!f**k

也许是本地使用Apache直接配置的https,而阿里云虚拟主机使用的Ngnix+CDN间接配置的https的原因吧,也可能是wordpress的问题,想想,教程好像是hexo搭建的博客,然后使用的阿里云虚拟主机,hexo是静态页面,本来过场就少的多…

唉,想通了再研究吧,有时间学学php呢,哈哈哈

CuteFTP显示隐藏文件

想改.htaccess,发现用CuteFTP连接FTP后看不到这个文件,于是网上搜了下,找到了教程,网上的使用的中文版软件,下面再说说英文版软件的操作。

1,选择软件左边栏的“Site Manager”(站点管理器)栏,如果没有FTP连接就新建一个FTP连接(右键->New->FTP Site),然后在建好的连接上右键->Properties(属性)。

2,选择“Action”(动作)栏。

3,选择下方的“Filter”(过滤器)按钮。

4,在“Filter Properties”(过滤器属性)栏,勾选“Enable filtering”(启用过滤器)。

5,勾选“Serve side filtering”(服务端过滤起)框中的“Enable server side filtering …”(启用服务端过滤器)选项。

6,下方“Remote filter”(远程过滤器)填上“-a”。

这样就设置完毕了,连接FTP,就可以看到隐藏文件.htaccess了。

附个设置图片:

CuteFTP显示隐藏文件

CuteFTP显示隐藏文件

openssl.org打不开的解决方法

想下载openssl,发现下载页面openssl.org/source打不开… 不知道是不是被我国最先进的墙给挡了…

怎么办呢?这时度娘就有用了,用百度搜索“openssl.org/source”,结果的第一条就是该页面了,点击条目尾巴上的“百度快照”,我们就可以看该网页的快照了,相当于看这个页面,虽然可能是之前的数据,但是总比打不开好啊。

然后找到下载地址,下载就可以了!