HDFS初探

一、  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。

142225_8XnW_126298.png

以上是官方网站(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以后再试试吧。

142257_KJu3_126298.png

虚拟机节点

142319_JPtg_126298.png

JDK版本

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

1.2.2. 主节点

l  分配了IP地址 192.168.43.129。

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

vi /etc/hosts。

142342_vciK_126298.png

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

142349_crMZ_126298.png

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

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

142414_bHND_126298.png

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中。

142548_XWFq_126298.png

配置JDK环境变量:

142556_DvHa_126298.png

配置hadoop的环境变量:

142605_jn4O_126298.png

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

 

3、 相关配置

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

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

l  core-site.xml

142617_SNNU_126298.png

l  fdfs-site.xml

142629_Jvth_126298.png

142641_gEsr_126298.png

l  mapred-site.xml

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

 

l  主从节点的ssh免密登录

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

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

142657_Khls_126298.png

2、  生成公钥

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

142705_Zgzh_126298.png

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

142719_LxRI_126298.png

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

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

l  hadoop的slaves配置

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

142738_9lVq_126298.png

配置的是两个从节点的主机名,这也就是上面在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是可以同时启动这两个的,不过并不推荐用。

 

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

142754_V0D8_126298.png

 

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环境导致的报错(低级错误,相信大家不会犯)

142820_AaGK_126298.png

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

l  SSH连接提示

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

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

142828_FZcy_126298.png

然后重启下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

142841_oZOO_126298.png

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

142851_G5bv_126298.png

l  httpfs配置

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

142928_i1Ys_126298.png

l  启动httpfs

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

2、 http操作示例

143126_7LFY_126298.png

143333_HtSB_126298.png

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

3、 使用nginx来负载均衡

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

 

 

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

转载于:https://my.oschina.net/u/126298/blog/816067

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值