您的位置:首页 > 运维架构

HDFS--hadoop集群

2016-07-19 22:48 387 查看

1.  hadoop三篇论文:

– GFS

– Map-Reduce

– Bigtable

2.HDFS优缺点:

HDFS优点:

– 高容错性

• 数据自动保存多个副本

• 副本丢失后,自动恢复

– 适合批处理

• 移动计算而非数据

• 数据位置暴露给计算框架

– 适合大数据处理

• GB 、TB 、甚至PB 级数据

• 百万规模以上的文件数量

• 10K+ 节点

– 可构建在廉价机器上

• 通过多副本提高可靠性

• 提供了容错和恢复机制

HDFS缺点:

– 低延迟数据访问

• 比如毫秒级

• 低延迟与高吞吐率

– 小文件存取

• 占用NameNode 大量内存

• 寻道时间超过读取时间

– 并发写入、文件随机修改

• 一个文件只能有一个写者

• 仅支持append

3.  HDFS架构流程:



 

4.  Block

HDFS 数据存储单元(block)

– 文件被切分成固定大小的数据块

• 默认数据块大小为64MB(hadoop1.x),可配置

• 若文件大小不到64MB ,则单独存成一个block

– 一个文件存储方式

• 按大小被切分成若干个block ,存储到不同节点上

• 默认情况下每个block都有三个副本

– Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更

 

HDFS设计思想:



5. NN SNN DN(元数据 fsimage edits)

NameNode(NN)

– NameNode主要功能:接受客户端的读写服务

– NameNode保存metadate信息包括

• 文件owership和permissions

• 文件包含哪些块

• Block保存在哪个DataNode(由DataNode启动时上报)

– NameNode的metadate信息在启动后会加载到内存

• metadata存储到磁盘文件名为”fsimage”

• Block的位置信息不会保存到fsimage

• edits记录对metadata的操作日志

SecondaryNameNode(SNN)

– 它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。

– SNN执行合并时机

• 根据配置文件设置的时间间隔fs.checkpoint.period  默认3600秒

•  根据配置文件设置edits log大小fs.checkpoint.size 规定edits文件的最大值默认是64MB

SNN合并流程



 

DataNode(DN)

– 存储数据(Block)

– 启动DN线程的时候会向NN汇报block信息

– 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收 到DN的心跳,则认为其已经lost,并copy其上的block到其它DN

6. Block副本策略



7. 安全模式 safemode

– namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各 项操作。

– 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。

– 此刻namenode运行在安全模式。即namenode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败)。

– 在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认 为是“安全”的, 在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束

– 当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。

8. HDFS文件权限

– 与Linux文件权限类似

• r: read;w:write; x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容

– 如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个 文件在HDFS中owner就是zhangsan。

– HDFS的权限目的:阻止好人错错事,而不是阻止坏人做坏事。HDFS 相信,你告诉我你是谁,我就认为你是谁。

9. 安全管理 hdfs安全认证用户名匹配

 

 

 

10. Hdfs完全分布式搭建

4台虚拟机

node3  NN

node4  SNN

node4-6DN

 

1、host  hosts 网络

修改hosts文件:vi /etc/hosts



同步四台虚拟机的hosts文件。

2、时间同步ntp

安装ntp:yum –y install ntp

设置时间同步:ntpdate 210.72.145.44

3、防火墙

service iptables stop 立即关闭,重启后失效

chkconfig iptables off 永久关闭,重启后生效

4、jdk 配置环境变量

添加配置:vi ~/.bash_profile

export PATH

export JAVA_HOME=/usr/java/jdk1.7.0_79

export PATH=$PATH:$JAVA_HOME/bin

修改立即生效:source ~/.bash_profile

5、免密钥

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

    cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

与其它机器免密钥连接,将.ssh/id_dsa.pub追加到另一台机器的~/.ssh/authorized_keys文件中

6、上传tar 解压

tar –zxvf *.gz.tar

7、修改配置文件 

hadoop-env.sh 修改java_home路径

 core-site.xml

<configuration>

    <property>

        <name>fs.defaultFS</name>

       <value>hdfs://node1:9000</value>  请求hdfs

    </property>

    <property>

        <name>hadoop.tmp.dir</name>

       <value>/opt/hadoop</value>  hadoop存放目录 该目录下边不允许有任何文件或者目录

    </property>

</configuration>

 

 hdfs-site.xml

<configuration>

    <property>

       <name>dfs.replication</name>

        <value>3</value>   block副本数量

    </property>

    <property>

       <name>dfs.namenode.secondary.http-address</name>

        <value>node4:50090</value>    SNN http请求的端口

    </property>

    <property>

       <name>dfs.namenode.secondary.https-address</name>

        <value>node4:50091</value>    SNN https请求的端口

    </property>

</configuration>

 

vi slaves  (DN)

node4

node5

node6

 

vi masters  (SNN,该文件与slaves同级目录,需要创建)

node4

 

!!! 同步集群当中所有节点上的配置文件!!!

 

8、格式化NN 

添加环境变量:vi ~/.bash_profile

exportCLASSPATH=.:/lib/dt.jar:/lib/tools.jar

exportHADOOP_HOME=/usr/hadoopsoft/hadoop-2.5.1

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

 

source ~/.bash_profile

 

在NN上执行 hdfs namenode -format

9、启动dfs 

在一台机器上执行:/usr/hadoopsoft/hadoop-2.5.1/sbin /start-dfs.sh

11. Hdfs shell



12. Eclipse使用

将jar包hadoop-eclipse-plugin-2.5.1.jar复制到Eclipse安装目录下的plugins下

点击菜单栏window -> show view -> Map/Reduce Location



13. Java API

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: