`
nada_forever
  • 浏览: 24126 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hadoop-HDFS分布式环境搭建

阅读更多

最近在考虑一个移动互联网的AppStore项目,就应用及游戏如何存储,对多种内容存储容器进行了选型,其中也包括了对HDFS的考察,本篇是对HDFS的分布式环境搭建进行一个备忘录,以备日后参考。

 

HDFS简单介绍

HDFS的英文全称是Hadoop Distributed File System,顾名思义,就是Hadoop分布式文件系统,是根据GoogleGFS的论文,由Doug Cutting使用Java开发的开源项目。HDFS本身是Hadoop项目的一部分,为Hadoop提供了底层的数据存储,以供上层的各种实际应用使用(如Map/Reduce)。HDFS是典型的Master/Slave集群架构,由一个NameNode和多个DataNode组成,NameNode只能是一个,扮演着Master的角色,负责对具体存储块的元数据进行保存,如某个存储块具体保存在哪个DataNode上;DataNode可以为多个,扮演着Slave的角色,负责对具体的存储块进行保存,一个相同的存储块根据配置可以保存到多个DataNode上,以保持数据的高可用性。客户端与HDFS交互时,典型的,会先询问NameNode具体的存储块在哪个DataNode上,然后客户端会直接联系相应的DataNode,来获取或写入数据。各个DataNode会定时发送心跳至NameNode,以便NameNode了解DataNode的可用状态及存储状态,这样可以保证某一个DataNode挂掉,NameNode可以做相应处理,以保证数据的高可用性。

HDFS的目标就是使用大量的廉价PC机,来维护海量的大数据块,并且保证数据的高可用性,并且HDFS集群会随着更多PC机的加入,而提高数据的存储量(当然这与具体环境的硬盘相关)与吞吐量(当然这与具体环境的网卡带宽相关),单个Hadoop集群一般最大可达2000个节点。

在可预见的未来,大数据(BigData)必然会常态化,当前业内的IT巨头均在对HDFS进行研究,如GoogleYahoo,阿里等,不过,开源世界好就好在,“科技巨头”搞的玩意,我们草根也可以尝试一下,呵呵,下面就具体介绍一下HDFS的分布式环境搭建。

 

具体搭建环境描述

由三台机器组成,1NameNode2DataNode

NameNode:172.16.4.14

DataNode:172.16.4.20

DataNode:172.16.3.35

 

具体搭建过程描述

三台机器的所有配置保持一致就可以了,下面是以NameNode机器上的配置过程进行描述:

1、安装Java1.6(略);

2、以root登录,为HDFS新建一个帐号(不是必须的,但这样比较符合linux下的安全规范,呵呵)

[root@test-2 ~]# useradd hdfs

[root@test-2 ~]# passwd hdfs

Changing password for user test.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

 

3、下载Hadoop软件包,官方下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/core/

使用hdfs用户上传至/home/hdfs目录,并解压至 /home/hdfs/hadoop

[hdfs@test-2 ~]# tar -zxvf hadoop-0.21.0.tar.gz

 

4、增加HADOOP_HOME环境变量

.bash_profile中,增加

export HADOOP_HOME /home/hdfs/hadoop

使修改生效

[hdfs@test-2 ~]$ . .bash_profile

 

5、修改JAVA_HOME环境变量

编辑/home/hdfs/hadoop/conf/hadoop-env.sh

JAVA_HOME的值修改为真实有效的地址,如果不知道,请执行echo $JAVA_HOME 查看;

 

6、配置ssh环境

HDFS的各种操作,是通过ssh登录后进行,默认情况下,需要多次输入密码,比较麻烦(你可以执行ssh localhost试一试,看看是否需要输入密码),我们要对ssh进行配置;

执行下面命令:

[hdfs@test-2 ~]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

[hdfs@test-2 ~]# cat /home/hdfs/.ssh/id_dsa.pub > /home/hdfs/.ssh/authorized_keys

[hdfs@test-2 ~]# chmod 600 /home/hadoop/.ssh/authorized_keys //这句必须要执行

 

然后你可以通过scp命令,将authorized_keys拷贝至所有的DataNode机器上,并在DataNode机器上对authorized_keys文件赋予600的权限

[hdfs@test-2 ~]# scp -r /home/hdfs/.ssh hdfs@172.16.4.20:/home/hdfs

完成以上操作后,可以尝试命令ssh localhost,以及ssh 172.16.4.20,看看现在使用ssh是否需要密码了,如果不需要,那恭喜你,成功了

 

7、对/home/hdfs/hadoop/conf/下的几个关键配置文件进行配置

core-site.xml配置

<configuration>

     <property>

         <name>fs.default.name</name>

         <value>hdfs://172.16.4.14:9000</value>

     </property>

</configuration>

 

hdfs-site.xml配置

<configuration>

     <property>

         <name>dfs.name.dir</name>

         <value>/home/hdfs/hadoop/data/dfs.name.dir</value>

     </property>

     <property>

         <name>dfs.data.dir</name>

         <value>/home/hdfs/hadoop/data/dfs.data.dir</value>

     </property>

     <property>

         <name>dfs.permissions</name>

         <value>false</value>

     </property>

     <property>

         <name>dfs.replication</name>

         <value>2</value>

     </property>

</configuration>

 

masters配置

172.16.4.14

 

slaves配置

172.16.3.35

172.16.4.20

 

并将所有改动的配置文件,同步至每个DataNode机器的相同文件夹下(仍然可使用scp命令)

 

8、对NameNode进行格式化(该操作只需对NameNode操作)

执行

[hdfs@test-2 bin]$ /home/hdfs/hadoop/bin/hadoop namenode -format

 

9、启动!

ok,至此最基本的配置已经完成,是不是还挺简单的?呵呵

让我们来启动HDFS吧,只需要对master机器进行操作哦(还记得前面说的,会通过ssh连上slave机器,对DataNode进行操作吧?);

执行

[hdfs@test-2 bin]$ /home/hdfs/hadoop/bin/start-dfs.sh

 

如果启动遇到问题,请对NameNodeDataNode的日志进行查看,路径为/home/hdfs/hadoop/logs,看看是否有Exception抛出。

 

10、简单对HDFS进行试用

HDFS交互的脚本均在/home/hdfs/hadoop/bin下,我们这里主要以./hadoop脚本为例

创建一个名为newdir的新目录

[hdfs@test-2 bin]$ ./hadoop fs -mkdir newdir

查看HDFS文件系统/user/hdfs目录下的文件列表

[hdfs@test-2 bin]$ ./hadoop fs -ls /user/hdfs

在我的机器上,输出:

11/10/01 23:55:10 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000

11/10/01 23:55:10 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id

Found 4 items

drwxr-xr-x   - hdfs      supergroup          0 2011-09-26 17:30 /user/hdfs/apk

drwxr-xr-x   - hdfs      supergroup          0 2011-09-22 11:35 /user/hdfs/mydir

drwxr-xr-x   - Doug.Wang supergroup          0 2011-09-22 11:35 /user/hdfs/mydir_1

drwxr-xr-x   - hdfs      supergroup          0 2011-10-01 23:52 /user/hdfs/newdir

 

可以看到,我之前建立的文件夹apk,mydir,mydir_1newdir,其他的操作指令可通过./hadoop fs来进行查看

 

写在最后的

在搭建了HDFS的最简分布式环境后,对HDFS集群进行了简单的并发访问测试。首先将13M左右的文件存储至HDFS,然后客户端同时进行1000个并发读的操作,基本上,性能瓶颈就在HDFS节点的网卡上了。

下面这种场景,应该是不适合使用HDFS的:

在同一个IDC内部,部署一个HDFS集群,并且内部均存储着较大的文件(1M-100M),在同一个IDC内部,有多台机器作为客户端会访问HDFS集群,通过内部千兆以太网去读取文件。试想,如果客户端请求较多时,IDC内部的以太网通道马上就堵塞了,可能会引起“数据风暴”。

因此,在实践中,我们对HDFS的使用,大概应当是这样的:不要将HDFS作为一个单纯的存储系统来使用,而应当结合HDFS上层的Map/Reduce架构,使HDFS中的大块数据并不会频繁地进行传输移动。数据在哪,我们就在哪进行计算。这也是符合Hadoop的设计目标与基本假设的:“移动计算比移动数据更加经济”。

分享到:
评论

相关推荐

    Hadoop 3 HDFS完全分布式搭建.docx

    Hadoop 3 HDFS完全分布式搭建.docx

    Hadoop-HDFS-Shell-学习资料及文档、Java代码

    内容概要: 架构、流程、机制、原理、环境、数据...HadoopHDFS-JavaRPC操作代码,含服务端和客户端代码; hadoop生态现状、介绍、部署; hadoop2.4.1伪分布式搭建; 分布式文件系统; 复安装过程详细步骤; hdfs笔记;

    hadoop-2.8.1完全分布式搭建脚本和配置文件

    3台zookeeper,实现namenode和resourcemanager的高可用,脚本实现12台机器ssh免密登陆的全部自动化,还有配置文件的分发也全部是脚本实现,这样就很省事了

    Hadoop-搭建分布式集群.docx

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据...

    hadoop-3.3.4 版本(最新版)

    Hadoop 是一个能够让用户轻松搭建和使用的分布式计算平台,能 够让用户轻松地在 Hadoop 上开发和运行处理海量数据的应用程序。 Hadoop 架构有两个主要的组件:分布式文件系统 HDFS 和 MapReduce 引擎。 在 Hadoop 中...

    Hadoop集群搭建-完全分布式

    本文通过12个步骤实现Hadoop集群的完全分布式搭建 刚刚入门,如有错误请指出 文章目录1. 服务器准备2. 网络环境准备3. 服务器系统设置4. JDK环境安装5. Hadoop安装6. Hadoop文件配置:hadoop-env.sh(hadoop运行环境...

    Hadoop伪分布式环境搭建

    1、搭建Hadoop伪分布式环境,通过HDFS 进行文件的上传和下载来测试环境是否搭建成功; 2、创建Java Maven项目,编写MapReduce代码实现对文本中字符(包含大小写字母、数字、各种符号)的统计,将项目打成jar包放入...

    第3章hadoop伪分布式环境的搭建.docx

    hadoop是大数据学习的基础,而且hadoop的伪分布式操作是入门的基础。本文档详细介绍了hadoop目前企业所用的版本的安装配置。

    Apache hadoop-3.1.0 版本

    Hadoop 是一个能够让用户轻松搭建和使用的分布式计算平台,能 够让用户轻松地在 Hadoop 上开发和运行处理海量数据的应用程序。 Hadoop 架构有两个主要的组件:分布式文件系统 HDFS 和 MapReduce 引擎。 在 Hadoop 中...

    Linux下Hadoop2.7.3集群环境的搭建.docx

    本文旨在提供最基本的,可以用于在生产环境进行Hadoop、HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用。

    Hadoop-1.1.2上路 v1.0

    基于hadoop-1.1.2的伪分布式集群、分布式集群搭建。使用javaapi操作hdfs、hdfs内部操作命令、从win7访问ubuntu中的hadoop集群。 eclipse hadoop java 分布式 云计算 Hadoop-1.1.2上路 v1.0

    Hadoop 分布式集群搭建_部分1.docx

    Hadoop 分布式集群搭建 Hadoop由Apache基金会开发的分布式系统基础架构,是利用集群对大量数据进行分布式处理和存储的软件框架。用户可以轻松地在Hadoop集群上开发和运行处理海量数据的应用程序。Hadoop有高可靠,...

    hadoop分布式文件系统搭建

    工作中搭建的hadoop分布式文件系统和hive ,mysql等的搭建的具体步骤

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    第一天 hadoop的基本概念 伪分布式hadoop集群安装 hdfs mapreduce 演示 01-hadoop职位需求状况.avi 02-hadoop课程安排.avi 03-hadoop应用场景.avi 04-hadoop对海量数据处理的解决思路.avi 05-hadoop版本选择和...

    部署全分布模式Hadoop集群 实验报告

    5. 熟练掌握在 Linux 环境下如何部署全分布模式 Hadoop 集群。 二、实验环境 本实验所需的软硬件环境包括 PC、VMware Workstation Pro、CentOS 安装包、Oracle JDK 安装包、Hadoop 安装包。 三、实验内容 1. 规划...

    hadoop段海涛老师八天实战视频

    第一天 hadoop的基本概念 伪分布式hadoop集群安装 hdfs mapreduce 演示 01-hadoop职位需求状况.avi 02-hadoop课程安排.avi 03-hadoop应用场景.avi 04-hadoop对海量数据处理的解决思路.avi 05-hadoop版本选择和...

    零基础学习Hadoop3.0从入门到源码

    ├─1.HDFS │ ├─视频-零基础学习Hadoop3.0-HDFS从入门到源码 │ │ │ 00--课程内容大纲和学习目标.mp4 ...│ │ │ 16--Hadoop概述--集群搭建--namenode format操作及注意事项.mp4 │ │ ├─

    hadoop文档, hdfs mapreduce,环境搭建,例子介绍等

    学习hadoop的比较全的中文资料。文中几乎综合了所有入门用户需要的内容,包括hadoop项目的单机,为分布式,分布式的搭建和环境配置,以及具体的hdfs的内部结构等。

    分布式存储系统-HDFS.docx

    内容概要:  分布式文件系统与 HDFS  HDFS 体系结构与基本概念★★★ ... 搭建 eclipse 开发环境★★  java 接口及常用 api★★★  hadoop 的 RPC 机制★  hadoop 读写数据的过程分析★★

    Linux下Hadoop伪分布式配置

    OS系统中配置Hadoop-0.19.1伪分布式时的总结文档,但该文档也适合其他版本的Linux系统和目前各版本的Hadoop(Hadoop-0.20之后的版本配置文件hadoop-site.xml被拆分成了三个core-site.xml,hdfs-site.xml和mapred-site...

Global site tag (gtag.js) - Google Analytics