Category Archives: Hadoop

HUE – Let’s big data.

Hue(http://gethue.com/)全称是Hadoop User Experience,由Cloudera开发,是一个用于数据分析的Apache Hadoop的Web接口。
它提供的功能包括:
一个HDFS的文件浏览器
一个MapReduce/YARN的作业浏览器
一个Hive、HBase,Cloudera Impala 和 Sqoop2 的查询编辑器。
它还附带了一个Oozie的应用程序,用于创建和监控工作流程。后期数据可视化功能也非常强大!是不是觉得很高大上啊!下面我们一起使用一下东西。 Continue reading

Posted in BigData, Hadoop.

HDP/Ambari集群扩容笔记

最近HDP的一次扩容工作中(Ambari 1.6.x, CentOS 6.6),遇到了大大小小不少坑。借此总结一下: Continue reading

Posted in BigData, Hadoop.

HDFS NFS网关操作实战

续上一篇译文,集群运行在test[1-4],设置nfsserver的用户组是root,host为test1(同namenode)。版本为CDH5.2.1(Hadoop 2.5.0)。
Continue reading

Posted in BigData, Hadoop, Ops.

【译】HDFS NFS网关

概述

NFS网关支持NFSv3,并允许HFDS被当作客户端本地的文件系统一样被挂载。目前NFS网关支持/允许下面的使用模式:
-> 用户可以通过兼容操作系统的NFSv3客户端作为本地文件系统来浏览HDFS文件系统。
-> 用户可以从HDFS文件系统中下载文件到他们的本地文件系统。
-> 用户可以直接将他们本地文件系统的文件上传到HDFS文件系统。
-> 用户可以通过挂载点直接向HDFS输出流数据。文件追加操作被支持,但是不允许随机写。
NFS网关机器需要包含HDFS客户端(包括Hadoop Jar文件,HADOOP_CONF目录)。NFS网关在DataNode,NameNode和任意HDFS客户端上。 Continue reading

Posted in BigData, Hadoop, Ops.

HDFS HttpFS操作实战

HttpFS是提供REST HTTP接口的服务器,可以支持全部HDFS文件系统操作(读和写),它通过webhdfs REST HTTP API来进行交互。这个功能由cloudera提供给Apache主分支。
HttpFS可以用于在不同的Hadoop版本间传输数据(避免了RPC版本问题),例如使用Hadoop DistCP。
HTTP可以用于访问防火墙内的HDFS集群数据(HttpFS可以作为一个网关角色,是唯一可以穿过防火墙访问内部集群数据的系统)。
HttpFS可以通过HTTP工具(比如curl和wget)和各种编程语言的HTTP包(不局限Java)来访问数据。
webhdfs 客户端文件系统实现可以使用HDFS文件系统命令行命令(如hadoop dfs)以及使用HDFS Java API来访问HttpFS。
HttpFS内置安全特性支持Hadoop伪身份验证和HTTP SPNEGO Kerberos 和其他插件式(pluggable )验证机制。它还提供了Hadoop代理用户的支持。 Continue reading

Posted in BigData, Hadoop, Ops.

HDFS ACL操作实战

HDFS的文件ACL(Access Control Lists),类似于POSIX ACL(Linux使用ACL来管理文件权限)。
首先参数上要开启基本权限和访问控制列表功能,在CDH 5.2中,默认的参数dfs.namenode.acls.enabled为false。

一个访问控制列表(ACL)是一组ACL词目(entries)的集合,每个ACL词目会指定一个用户/组,并赋予读/写/执行上等权限。例如:

这里面,没有命名的用户/组即该文件的基本所属用户/组。每一个ACL都有一个掩码(mask),如果用户不提供掩码,那么该掩码会自动根据所有ACL条目的并集来获得(属主除外)。在该文件上运行chmod会改变掩码的权限。由于掩码用于过滤,这有效地限制了权限的扩展ACL条目,而不是仅仅改变组条目,并可能丢失的其他扩展ACL条目。 Continue reading

Posted in BigData, Hadoop, Linux, Ops.

HDFS缓存管理操作实战

HDFS提供了一个高效的缓存加速机制——Centralized Cache Management,可以将一些经常被读取的文件(例如Hive中的fact表)pin到内存中。这些DataNode的缓存也是由NameNode所管理的(NameNode所管理的cache依然是以block形式,而DataNode也会定期向NameNode汇报缓存状态),而客户端可以高效得读取被缓存的数据块;为了能锁定内存,该实现依赖于JNI使用libhadoop.so,所以POSIX资源限制也要进行相应的设置(ulimit -l),并确保下面的参数被设置。
1
Continue reading

Posted in BigData, Hadoop, Ops.

HDFS配额操作实战

在HDFS中,管理员可以通过为每一个目录设置一定名称和空间上的配额。名称配额和空间配额可以单独设置,但是从管理上和实现上,这两种配额接近平行。
名称配额(name quota)是在该目录下所有文件和目录名称的数量上的硬限制。当超过这个配额设置时,文件或目录就会创建失败。重命名后命名配额仍然起作用。如果重命名操作违反配额的限制,那么重命名会失败。新建的目录不会有任何配额设置。名字配额的上限是Long.Max_Value,如果配额为1那么这个目录会强制为空,因为目录自身也会占用1个配额。配额的设置被持久化在fsimage中,当启动后,如果fsimage发现违反了配额限制,这输出警告。另外,设置或删除配额会创建一个空的日志。
只有管理员可以设置名称配额和空间配额,下面的命令设置/清理名称配额。N需要是一个正整数。 Continue reading

Posted in BigData, Hadoop, Ops.

HDFS snapshot操作实战

Hadoop从2.1.0版开始提供了HDFS SnapShot的功能。一个snapshot(快照)是一个全部文件系统、或者某个目录在某一时刻的镜像。快照在下面场景下是非常有用:
防止用户的错误操作:管理员可以通过以滚动的方式周期性设置一个只读的快照,这样就可以在文件系统上有若干份只读快照。如果用户意外地删除了一个文件,就可以使用包含该文件的最新只读快照来进行回复。
备份:管理员可以根据需求来备份整个文件系统,一个目录或者单一一个文件。管理员设置一个只读快照,并使用这个快照作为整个全量备份的开始点。增量备份可以通过比较两个快照的差异来产生。
试验/测试: 一个用户当想要在数据集上测试一个应用程序。一般情况下,如果不做该数据集的全量拷贝,测试应用程序会覆盖/损坏原来的生产数据集,这是非常危险的。管理员可以为用户设置一个生产数据集的快照(Read write)用于用户测试使用。在快照上的改变不会影响原有数据集。
灾难恢复:只读快照可以被用于创建一个一致的时间点镜像用于拷贝到远程站点作灾备冗余。 Continue reading

Posted in BigData, Hadoop, Ops.

HDFS trash操作实战

HDFS会早每一个用户目录下创建一个回收站目录,即:/user/username/.Trash。每一个被删除的文件和目录,都会有一个回收周期(fs.trash.interval)。在这个回收周期内,文件实际上会被移动到这个回收站目录下面,可以被用户手动进行恢复。当回收周期到达时,HDFS就会将这个文件/目录彻底删除。
在每个节点的core-site.xml上配置为1天:

在HDFS内部的具体实现就是在NameNode中开启了一个后台线程Emptier(默认是org.apache.hadoop.fs.TrashPolicyDefault.Emptier,也可以通过fs.trash.classname指定TrashPolicy类),这个线程专门管理和监控系统回收站下面的所有文件/目录,对于已经超过生命周期的文件/目录,这个线程就会自动的删除它们,不过这个管理的粒度很大。另外,用户也可以手动清空回收站(通过hdfs dfs -expunge),也可以使用rm清空回收站,此时,不会再触发回收站操作。Emptier每隔fs.trash.interval分钟就清空一次用户回收站。即先检查每个用户回收站目录,然后删除寿命超过fs.trash.interval的目录,最后将当前存放删除的文件/目录的回收站目录/user/用户名/.Trash/current重命名为一个/user/用户名/.Trash/yyMMddHHmm。也就是从理论上说,在回收站里的目录会保留fs.trash.interval – 2*fs.trash.interval时间区间。
如果使用rm命令时,启用trash的fs.trash.interval参数不用重启后台进程。但要求在/user目录下需要有对应用户的home目录,否则会因为创建目录失败报错。
rmr: Failed to move to trash: hdfs://test1:9000/tmp: Permission denied: user=root, access=WRITE, inode=”/user”:hdfs:supergroup:drwxr-xr-x
成功删除会提示mv到trash目录下。

Posted in BigData, Hadoop, Ops.