• Hadoop学习之安装HDFS


    在windows电脑里面搭建的一个简单的HDFS(Hadoop 分布式文件系统)

    用了三个服务器:IP地址分别为:

    192.168.233.3 HDFS的名称节点:NameNode

    192.168.233.4 HDFS的数据节点:DataNode 和 HDFS的第二名称节点 SecondearyNameNode

    192.168.233.5 HDFS的数据节点:DataNode

    其中192.168.233.3中的NameNode是用来存放元数据的(文件的大小、文件的拥有者、文件的权限等等)

    192.168.233.4和192.168.233.5中的DataNode是用来存放文件内容的(存放的文件会被切分成多个数据块,然后存放在不同的DataNode中)

    (1)上传HDFS相关的jar包,这里应用的是hadoop-1.2.0.tar.gz

    下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-1.2.0/hadoop-1.2.0.tar.gz

    (2)解压:tar -zvxf hadoop-1.2.0.tar.gz

    (3)创建快捷方式:

    (4)修改配置文件:

    来源配置信息:http://hadoop.apache.org/docs/r1.2.1/single_node_setup.html

    在下载的解压的包中有docs/core-default.html里面有详细的介绍各个参数配置有什么具体意思

    /home/hadoop-1.2/conf/core-site.xml

    fs.default.name:这个是客户端进行访问的ip地址和端口号,但是浏览器采用的是http协议,所以浏览器访问的端口号是50070,这个地址就是NameNode的地址

    hadoop.tmp.dir:后续的DataNode都是基于这个地址,此参数默认的是linux的tmp目录,这里必须要配置,否则,服务器重启的时候,tmp文件夹会清空,会导致上传的文件丢失。这个/opt/hadoop-1.2目录不需要手动创建,在NameNode初始化的时候,NameNode会自己创建

    /home/hadoop-1.2/conf/hdfs-site.xml

    dfs.replication这是DataNode中的block数据块的副本数量,因为是NameNode本台服务器的副本数,所以设置为1,如果不设置的话,默认是3,就是说DataNode中的block数据块的所有副本都在NameNode这台服务器上,这样的话,一旦服务器硬盘损坏的话,数据就会无法找回,所以必须要放在不同的服务器上。

    于此同时需要配置其它DataNode中的block 的IP地址,在如下配置文件中添加。其中的masters配置的IP地址是secondNameNode 的地址,只要和NameNode不是同一IP地址就行,如果和NameNode地址一致,一旦NameNode出现问题,那么NameNode存储的所有信息就会丢失,而配置了SecondNameNode后,可以恢复部分数据。

    (5)ssh 设置免密码登录,就是各个DataNode和NameNode之间进行信息通讯,不需要进行密码连接。主要是在启动NameNode节点的时候,直接就可以启动其它的DataNode节点,为了方便在一台服务器上启动其它的服务器,比如在192.168.233.3服务器上写一个shell脚本,来启动其它服务器上的节点。

     执行如下命令:

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

    就会创建一个公钥和一个私钥,如图:

     

    在/root/.ssh目录下会有两文件产生:id_dsa文件和id_dsa.pub文件

    这个是192.168.233.3服务器产生的,上面画红线部分是id_dsa.pub文件的内容,如果要ssh 192.168.233.4服务器的话,需要将id_dsa.pub文件的内容复制的233.4服务器上的/root/.ssh/authorized_keys文件中,先将id_dsa.pub文件复制到233.4服务器上,执行如下命令:

    scp id_dsa.pub root@192.168.233.4:/tmp

    然后切换到233.4服务器上去,执行如下命令:

    cat /tmp/id_dsa.pub >> /root/.ssh/authorized_keys

    将id_dsa.pub文件的内容复制到需要登录的服务器上,并且将内容添加到目标服务器上的/root/.ssh/authorized_keys文件中。可以执行如下命令:

    scp id_dsa.pub root@192.168.233.4:/tmp:将id_dsa.pub文件远程复制到233.4服务器的tmp文件中,然后再登录到233.4服务器上,执行如下命令:

     cat /tmp/id_dsa.pub >> /root/.ssh/authorized_keys:将id_dsa.pub文件内容追加到authorized_keys文件中。

    注意:将id_dsa.pub文件内容复制到远程服务器上的authorized_keys文件夹中,不要手动复制,这样不会生效,需要使用命令cat id_dsa.pub >> authorized_keys

     接下来就可以免密登录了,如图:

    (6)初始化hdfs:

    在Hadoop的bin目录下执行如下命令:./hadoop namenode –format

    此命令的作用是使得之前配置的core-size.xml内容生效和hdfs-size.xml内容生效

    (7)在hadoop的dfs启动的配置文件中配置JAVA_HOME路径,修改如下的配置文件:

     

    上面的export JAVA_HOME必须要打开,并且要和安装的jdk配置的路径保持一致

    怎么样查看安装的jdk,在如下的目录下:

    这就是安装的全局变量JAVA_HOME,要和hadoop 的conf文件夹里面的hadoop-env.sh配置JAVA_HOME保持一致。修改完之后要保证其他的dataNode上的配置文件保持一致。

    (8)将conf下的所有文件复制到其它的dataNode 上去。

     先切换到conf目录再执行如下命令:

    scp ./* root@192.168.233.4:/root/hadoop-1.2.0/conf

    scp ./* root@192.168.233.5:/root/hadoop-1.2.0/conf

    (9)启动hdfs(特别要注意的是,要将服务器的防火墙进行关闭,否则启动DataNode的时候会失败!!)

    Service iptables stop 关闭防火墙

    可以通过jps命令查看NameNode是否启动成功

    (11)停止命令:./stop-dfs.sh

    (12)在windows下面进行域名解析:找到C:WindowsSystem32driversetchosts文件,加入如下的内容,就可以在浏览器进行访问了

    (13)在浏览器访问的地址为:(不知道为什么上面的域名解析没有生效,所以下面我直接用的IP地址访问的)

    http://192.168.233.3:50070/dfshealth.jsp

    初次写博客,写的不好,写的不详细,请见谅!

  • 相关阅读:
    无锁并行框架构建复杂消费模型
    Disruptor框架EventProcessor和Workpool的使用
    .NET工作准备--04ASP.NET
    .NET工作准备--03进阶知识
    .NET工作准备--02基础知识
    .NET工作准备--01前言
    Java核心编程快速入门
    IntellijIDEA快速入门(Windows版)
    企业模式和设计模式快速入门
    架构设计深入学习02-概念架构与细化架构
  • 原文地址:https://www.cnblogs.com/yehuili/p/9386216.html
Copyright © 2020-2023  润新知