文档章节

HDFS初探

CoKing
 CoKing
发布于 2016/12/30 14:34
字数 2117
阅读 16
收藏 0

一、  HDFS概览

以下介绍内容来自百度百科:

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。

---------------------------------------------------我是分割线----------------------------------------------

HDFS是Hadoop的文件存储系统,包含在Hadoop项目中,Hadoop项目目前最新版本是3.0.0-alpha1。

以上是官方网站(http://hadoop.apache.org/)目前提供的几个下载版本,本文从2.5.2版本开始尝试使用,并在后续过程中逐步探索新版的特性和修复的问题,并选择最终适用的版本作为生产环境使用。其实最主要的原因还是2.5.2是支持JDK1.6的。2.7.0的版本要求JDK1.7以上了,3.0.0要求JDK1.8。

本文主要介绍HDFS(Hadoop)的集群环境部署、HttpFS集成、HDFS客户端封装、与FASTDFS对比以及多源文件的存取操作这五个方面。

二、  Hadoop集群环境部署

1、 集群环境

1.1. 全局环境

电脑:ThinkPad E460,I5 6200U CPU@2.3GHz

内存:8g

硬盘:500 SSD

操作系统: WIN7旗舰版SP1 64位

网卡:1000M

1.2. 虚拟机

1.2.1. 虚拟机环境

资金有限买不起服务器,只能用虚拟机来模拟集群环境了,哭瞎/(ㄒoㄒ)/~~。

虚拟化软件:VMware Workstation 10

节点操作系统:CentOS 6.8 64位 1G内存 20G硬盘 4核CPU

Hadoop节点:共6个,一主五从,目前先用三台做测试,一主两从。从节点的虚拟机都是直接通过链接方式克隆了主节点的环境。各节点的JDK版本都是一致的,1.6.0_45,32位的JDK,64位JDK以后再试试吧。

虚拟机节点

JDK版本

VM、操作系统、JDK的安装配置就不赘述了。

1.2.2. 主节点

l  分配了IP地址 192.168.43.129。

l  配置hosts文件(这点在后面配置Hadoop的过程中吃了大亏,费了不少时间),

vi /etc/hosts。

l  需要的软件下载(没联网的机器,只能别地下了拷过来)

http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz

最好把官网的三个配置文件模板也下载来,方便配置

http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/core-default.xml

http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

http://hadoop.apache.org/docs/r2.5.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

1.2.3. 从节点01

l  分配了IP地址 192.168.43.130。

l  Hosts文件和主节点一样的修改。

l  这个就不用下Hadoop了,后面直接拷主节点配置好的过去。

 

1.2.4. 从节点02

l  分配了IP地址 192.168.43.131,其他的同上。

 

2、 软件安装

直接解压hadoop-2.5.2.tar.gz到/home/hadoop中。

配置JDK环境变量:

配置hadoop的环境变量:

解压后的目录结构,下面我们需要到etc/hadoop中去修改相应的配置文件。

 

3、 相关配置

具体配置项的含义可以参考官网提供的三个默认配置文件模板。

下面说下需要修改的配置:

l  core-site.xml

l  fdfs-site.xml

l  mapred-site.xml

这个是mapreduce的配置,暂时用不上,先不配了。

 

l  主从节点的ssh免密登录

hadoop主节点需要通过SSH登录到从节点上来启动hadoop,都是内网的机器,没太多安全性问题,所以为了方便,在主从服务器上配置免密登录,具体步骤如下:

1、  去掉/etc/ssh/sshd_config中以下两行注释启用centos的公钥认证。

2、  生成公钥

ssh-keygen -t rsa,一路回车下去,得到下图结果,生成成功。

3、在主节点上合并公钥

在主节点/root/.ssh目录中执行命令

cat id_rsa.pub>> authorized_keys

ssh root@192.168.43.130 cat ~/.ssh/id_rsa.pub>> authorized_keys

ssh root@192.168.43.131 cat ~/.ssh/id_rsa.pub>> authorized_keys

然后将这两个文件复制到两个从节点的/root/.ssh目录中

至此,主从节点的免SSH登录就完成了。

l  hadoop的slaves配置

下面需要在主节点配置从节点地址,hadoop目录下etc/hadoop下的slaves文件

配置的是两个从节点的主机名,这也就是上面在hosts文件中进行设置原因,因为最早的时候在这里配置的是从节点的IP,但是启动过程中报错了,改用主机名后就华丽丽的可以了,吃亏就在这里。

l  hadoop文件目录配置

需要新建三个目录,hadoop临时目录、节点名称目录、节点数据目录,对应的就是配置文件中的三个配置。

 

l  格式化hadoop节点目录

在主节点上执行命令 hdfs namenode –format即可,hadoop会根据主机名ip还有一些其他规则(暂时没研究)去格式化上面配置的目录。

 

这样整个Hadoop的配置就结束了,但是不要忘了还要把主节点的hadoop拷贝到每个从节点的相同目录中,否则启动会报错哦。(别问我怎么知道的,因为我就是忘了)

 

这时候可以去启动hadoop尝试一下了

进到hadoop的sbin目录,启动start-dfs.sh来运行HDFS,启动start-yarn.sh来运行资源管理器,里面有个start-all.sh是可以同时启动这两个的,不过并不推荐用。

 

启动完成以后就可以通过浏览器来看一下成果了,访问地址截图里有(别在意截图里从节点的数量,这是后来配完第三个节点才截的图)。

 

4、 问题总结

l  由于域名未配置导致的报错

报错信息如下:

192.168.43.132: ssh: Could not resolve hostname 192.168.43.132: Temporary failure in name resolution

直接在hadoop的slaves中配置了ip报了这个错,把ip192.168.43.132换成对应的主机名hadoop-slave03,再在hosts中增加配置192.168.43.132 hadoop-slave03就可以连接了。

l  由于从节点未拷贝hadoop环境导致的报错(低级错误,相信大家不会犯)

由于我的hadoop-slave03并没有这个hadoop环境,所以报了没有那个文件或目录的错误,困扰了半天才一下惊醒,^_^。

l  SSH连接提示

THE AUTHENTICITY OF HOST hadoop-slave03 CAN’T BE ESTABLISHED

在/etc/ssh/ssh_config中增加下面配置

然后重启下sshd服务/etc/init.d/sshd restart即可

l  namenode没有起来导致的错误

测试上传文件时报错信息如下:

could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.

报这个错基本上是namenode没启动成功,或者中间报了其他的错误,具体要看服务器日志里面关联的错误信息了。

l  需要注意的地方

由于我这里是直接克隆的虚拟机,所以从节点中的hosts文件信息、主机名都是主节点的,需要先更换好。

 

三、  集成HttpFS Gateway,使用http协议操作HDFS

1、 HttpFS Gateway集成

hadoop 2.5.2里面已经集成了httpfs,只要稍作配置即可通过http协议操作HDFS(说集成是看上去大气一点,哈哈)。

l  httpfs使用的tomcat

需要将这个tomcat配置到环境变量中

l  httpfs配置

core-site.xml增加如下配置:

l  启动httpfs

运行sbin/httpfs.sh start,就完成启动了,接下来就可以去浏览器中试试了。

2、 http操作示例

去请求一个我刚上传的文件,可以下载成功。

3、 使用nginx来负载均衡

我是占位符,过几天再写这里。

 

 

还剩下客户端封装、开发实例、与FastDFS对比,多源文件存取操作,等明年再出货了!

© 著作权归作者所有

CoKing
粉丝 3
博文 3
码字总数 3381
作品 0
芜湖
程序员
私信 提问

暂无文章

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部