如何查看指定的Hadoop(HDFS)目录的配额

Hadoop目录的配额是指为了限制一个HDFS文件夹中所包含的数据块和名称空间元素(如子文件夹和文件)的数量而设置的最大值。简单来说,就是对一个文件夹中可存储数据的上限进行管理和控制,以便于维护整个系统的健康和性能。

通过设置适当的配额,管理员可以确保每个目录不会超出其可承受的容量范围,防止集群资源被长时间占用或滥用。同时也可以通过监视使用情况来优化系统性能并减少故障风险。

阅读更多

[原创] 如何下载HLS流视频文件

在互联网上,有些视频以HLS流的形式呈现,当你用一些工具捕获到它的播放地址时,会发现是一个以 .m3u8 结尾的URL。
那么,什么是 HLS 和 m3u8 呢?

HLS(HTTP Live Streaming)是一种基于HTTP协议的流媒体传输协议,而M3U8则是一种基于文本的播放列表文件格式。在HLS中,媒体数据被划分成多个小文件进行传输,并使用M3U8文件作为索引来指向这些媒体数据文件。M3U8文件包含了所有的媒体数据文件的URL地址及其相关信息,如码率、分辨率、编码格式等。因此,当一个客户端请求播放一个HLS流时,它将下载对应的M3U8索引文件,并且根据其中包含的地址去下载其他的媒体数据文件。简单来说,HLS和M3U8是两个不同但紧密相连的概念,其中M3U8作为HLS协议中索引与定位资源的重要组成部分。

问题来了:如何下载HLS流视频文件呢?

阅读更多

[原创] Apache Pig 加载/解析/读取 XML数据

XML logo

查看更多Apache Pig的教程请点击这里

用Apache Pig加载/解析/读取XML数据不是一个常见的需求,但有时为了方便我们又不得不用,其实Pig的UDF库piggybank已经帮大家做好了这个工作了:只需要使用其中的XMLLoader,就可以方便地实现XML文件解析。

阅读更多

[原创] 通过第三方工具/JAVA程序访问S3存储

S3是亚马逊2006年推出的简单存储服务(Simple Storage Service),理论上是一个全球存储区域网络,你可以把它想像成一个超大的硬盘,可以在其中存储和检索数字资产,通过 S3 存储和检索的资产被称为对象,对象存储在存储段(bucket)中。
很多公司都推出了自己的对象存储服务,例如阿里云对象存储服务OSS,可以使用S3 API进行访问。

阅读更多

[原创] Apache Pig如何按数据分组保存到不同的子目录中(MultiStorage)

查看更多Apache Pig的教程请点击这里

用Apache Pig进行数据处理的时候,我们通常会在最后把处理结果保存到一个HDFS目录下:

STORE result INTO '/my_output_dir';

这是最常见的情况。
但是,如果我们想根据某个字段,把数据分成多组,分别存储在多个目录下呢?举个可能不恰当的例子,就有点像我们先把数据按某个字段分组:

GROUP data BY field;

再把各个group的数据分别存储在不同的目录下一样。

阅读更多

[原创] 用Charles Proxy来抓包Chrome浏览器的数据

charles proxy

查看Charles Proxy文章合集,请点击这里
本文适用的操作系统:Ubuntu

Charles Proxy是一个HTTP代理/HTTP监视器/反向代理,它使开发人员能够查看其计算机和Internet之间的所有HTTP和SSL/HTTPS流量。这包括请求、响应和HTTP headers(其中包含cookie和缓存信息)。

在Chrome浏览器中把代理服务器设置成Charles Proxy在本地提供的代理,可以让Charles Proxy把Chrome的网络流量抓取下来。
配置方法如下。

阅读更多

[原创] 扩展VirtualBox虚拟机的磁盘空间(vdi文件)

宿主机:Ubuntu 16.04 LTS
虚拟机:Windows 10

VirtualBox虚拟机文件有很多种格式,我的是vdi格式,对应的磁盘空间是37GB(Win10系统里只有一个C盘),由于虚拟机里的空间不够用了,想把它扩展成45GB,并且在数据不丢失的情况下仍然保持“只有一个C盘”的状态。
下面是操作方法。

阅读更多

[原创] ssh连接Linux服务器时提示"Too many authentication failures"的解决办法

如果你用 用户名+密码 的方式第一次ssh连接一台Linux服务器,连不上并且报以下错误:
Received disconnect from xxx.xxx.xxx.xxx port 22:2: Too many authentication failures
Disconnected from xxx.xxx.xxx.xxx port 22
如果你确定不是因为你输入了太多次错误密码,那么产生这个问题的一个可能原因是:
在发起连接的机器(记为A)的 ~/.ssh 目录下放了太多密钥文件,当你连接一台新的服务器并且没有在 ~/.ssh/config 文件中做过特殊的配置时,默认会挨个尝试所有密钥文件,而这些密钥文件,都不是适配那台新服务器的,所以会连接失败。

阅读更多

[原创] 在腾讯云的轻量应用服务器Lighthouse上用Squid开启HTTP代理服务

前段时间我看到腾讯云的促销广告,其“轻量应用服务器”首年的费用才85元(配置:1核CPU,2GB内存,50GB磁盘,带宽4Mbps,流量包500GB/月),可谓相当便宜,于是入手一台,安装了Ubuntu系统,用于一些简单的测试场景。

轻量应用服务器(Lighthouse)是新一代面向中小企业和开发者的云服务器产品,具备轻运维、开箱即用的特点,适用于小型网站、博客、论坛、电商以及云端开发测试和学习环境等轻量级业务场景,相比传统云服务器更加简单易用,并通过一站式融合常用基础云服务帮助用户便捷高效的构建应用,是您使用腾讯云的最佳入门途径。 

阅读更多

[原创] 使用Apache DataFu中的Coalesce()简化Apache Pig的三元运算符

查看更多Apache Pig的教程请点击这里

来看这个例子。有数据文件 1.txt,内容为:

a[\t][\t]c
[\t]f[\t]g
h[\t]k[\t]
[\t][\t][\t]
其中 [\t] 表示制表符(tab),并不是真的在文件中写了 [\t]
在Pig命令行交互模式下加载这个文件,并把其中为空(NULL)的列替换成一些数字:

A = LOAD '1.txt' AS (col1: chararray, col2: chararray, col3: chararray);
B = FOREACH A GENERATE (col1 IS NOT NULL ? col1 : '1') AS col1, (col2 IS NOT NULL ? col2 : '2') AS col2, (col3 IS NOT NULL ? col3 : '3') AS col3;
DUMP B;

输出:

(a,2,c)
(1,f,g)
(h,k,3)
(1,2,3)

代码非常简单:如果第一列col1为空则替换为1,如果第二列为空则替换为2,如果第三列为空则替换为3。
这里使用了三元运算符 ? : 来做这个判断,写法非常丑陋。

阅读更多

[原创] 推荐一款编写数学公式的国产神器:AxMath,可与LATEX双向转换

latex

我一直都很佩服那些可以直接用LATEX语法打出各种复杂数学公式的人,反正我是记不住,而且也真的不想去记LATEX语法。
比如这个公式:
cauchy's inequality

有的人能直接用LATEX手写出来:
\left( \sum_{i=1}^n{a_ib_i} \right) ^2\leqslant \left( \sum_{i=1}^n{a_{i}^{2}} \right) \left( \sum_{i=1}^n{b_{i}^{2}} \right) , a_i,b_i\in \mathbb{R}
这还算简单的了,更复杂的公式大神们都可以直接手写LATEX。
就问你服不服。
在下自愧脑容量不足。
所以当我要输入数学公式的时候,MathType这个功能强大的可视化数学公式编辑器就是我认为最方便易用的软件。

阅读更多

[原创] selenium-java的wait.until(ExpectedConditions)编译出错问题

代码示例:

wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.accept();

在升级了pom.xml中的selenium-java版本到3.141.59后,代码编译出错了(挂在第一行),错误信息:

无法将类 org.openqa.selenium.support.ui.FluentWait<T>中的方法 until应用到给定类型;
[ERROR]   需要: java.util.function.Function<? super org.openqa.selenium.WebDriver,V>
[ERROR]   找到: org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.Alert>
[ERROR]   原因: 无法推断类型变量 V
[ERROR]     (参数不匹配; org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.Alert>无法转换为java.util.function.Function<? super org.openqa.selenium.WebDriver,V>)