美文网首页
hadoop2.*学习笔记二(HDFS伪分布式)

hadoop2.*学习笔记二(HDFS伪分布式)

作者: Notput | 来源:发表于2016-07-11 22:30 被阅读234次

    HDFS简介摘录:HDFS 是一个 Apache Software Foundation 项目,是 Apache Hadoop 项目的一个子项目(参见参考资料)。Hadoop 非常适于存储大型数据(比如 terabytes 和 petabytes),并使用 HDFS 作为其存储系统。HDFS 允许您连接多个集群中包含的节点(普通个人计算机),那些集群上分布着一些数据文件。然后您可以将那些数据文件作为一个无缝文件系统来进行访问和存储。对数据文件的访问通过一种流线型(streaming)方式进行处理,这意味着应用程序或命令通过 MapReduce 处理模型直接执行(参见参考资料)。
    HDFS 是容错的,且提供对大数据集的高吞吐量访问。本文探索 HDFS 的主要特性,并提供一个高级 HDFS 架构视图。

    HDFS架构说明

    一个集群包含一个 Name node 。这种设计有利于形成一个简化模型来管理每个名称空间并仲裁数据分布。
    HDFS配置:
    由于使用个人电脑安装的虚拟机(centos 7/64bit)测试又加虚拟化不太熟悉就只能在伪分布式下进行测试。

    hadoop用户创建和免密码登录配置略过。

    JDK配置:

    --下载jdk1.7或者更高的jdk版本
    $ cd Downloads/ 
    $ ls 
     jdk-7u71-linux-x64.gz 
    $ tar zxf jdk-7u71-linux-x64.gz 
    $ ls
     jdk1.7.0_71 jdk-7u71-linux-x64.gz 
    
    --获得管理员使其jdk对所有用户有效
    $ su 
    password: 
    # mv jdk1.7.0_71 /usr/local/ 
    --返回hadoop用户
    # exit 
    --编辑~/.bashrc添加下面环境变量
    export JAVA_HOME=/usr/local/jdk1.7.0_71 
    export PATH=$PATH:$JAVA_HOME/bin 
    
    --使修改的配置生效
    $ source ~/.bashrc
    
    --jdk多版本控制
    $ su
    password:
    --把新的jdk加入到版本控制器中
    # alternatives --install /usr/bin/java java usr/local/java/bin/java 2
    # alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
    # alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2
    # alternatives --set java usr/local/java/bin/java
    # alternatives --set javac usr/local/java/bin/javac
    # alternatives --set jar usr/local/java/bin/jar
    
    --选择我们需要使用的版本
    # alternatives --config java
    
    --返回hadoop用户
    # exit
    
    --验证jdk安装是否成功,执行命令如出现jdk相关信息则表示配置成功
    $ java -version
       java version "1.7.0_71" 
       Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
       Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode) 
    

    Hadoop环境配置:

    --下载hadoop
    $ su 
    password: 
    # cd /usr/local 
    # wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/ hadoop-2.4.1.tar.gz # tar xzf hadoop-2.4.1.tar.gz 
    --重命名
    # mv hadoop-2.4.1 hadoop
    # exit   
    
    --编辑  ~/.bashrc添加下面环境变量
    export HADOOP_HOME=/usr/local/hadoop 
    export HADOOP_MAPRED_HOME=$HADOOP_HOME 
    export HADOOP_COMMON_HOME=$HADOOP_HOME 
    export HADOOP_HDFS_HOME=$HADOOP_HOME 
    export YARN_HOME=$HADOOP_HOME 
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
    export HADOOP_INSTALL=$HADOOP_HOME 
    
    --使其配置生效
    $ source ~/.bashrc 
    
    --验证hadoop安装是否成功
    $ hadoop version 
      Hadoop 2.4.1 Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768 
      Compiled by hortonmu on 2013-10-07T06:28Z 
      Compiled with protoc 2.5.0From source with checksum 79e53ce7994d1628b240f09af91e1af4 
    
    --这个目录包含所有hadoop的本地配置文件
    $ cd $HADOOP_HOME/etc/hadoop
    
    --如果使用java开发hadoop程序需要在hadoop-env.sh中修改添加如下环境变量
    export JAVA_HOME=/usr/local/jdk1.7.0_71
    

    Hadoop配置:

    --编辑$HADOOP_HOME/etc/hadoop/core-site.xml修改<configuration></configuration>内容如下:
    
    <configuration> 
      <property> 
        <name>fs.default.name </name> 
        <value> hdfs://localhost:9000 </value> 
      </property> 
    </configuration>
    
    ---------------------------------------------------------------
    --设置hdfs参数,修改hdfs-site.xml中<configuration></configuration>内容如下
    --文件备份个数
    <configuration>
      <!--hdfs中文件备份数量-->
     <property>
       <name>dfs.replication</name>
       <value>1</value>
     </property>
    
    <!--下面file所对应的目录可以晒当前系统中的任意目录-->
    <!--hdfs namenode 操作目录-->
     <property>
       <name>dfs.name.dir</name> 
       <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
     </property>
    
    <!--hdfs datanode 操作目录-->
     <property>
       <name>dfs.data.dir</name>
       <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value>
     </property>
     </configuration>
    
    ---------------------------------------------------------------
    --格式化hdfs,执行如下命令会在namenode和datanode对于的file path下面生成相应映射文件
    $ cd ~ 
    $ hdfs namenode -format 
    
    --格式化只需要执行一次,以后启动不需要再次执行。如果不小心重复执行了会出现namenode
    和datanode对应不上,启动后找不到datanode的进程,如果出现了这种事情可以使用如下方式解决问题:
    1 打开namenode 对应的操作目录下面/current/VERSION文件复制clusterID的值:
    $ cat /home/hadoop/hadoopinfra/hdfs/namenode/current/VERSION
    #Mon Jul 11 01:52:18 PDT 2016
    namespaceID=1991084453
    clusterID=CID-22f38c16-19a9-4dae-890e-a6a9056b3b58
    cTime=0
    storageType=NAME_NODE
    blockpoolID=BP-1747627022-127.0.0.1-1468227138388
    layoutVersion=-63
    
    2 编辑datanode对应的操作目录下面/current/VERSION文件修改clusterID的值为上面复制的值:
    vi /home/hadoop/hadoopinfra/hdfs/datanode/current/VERSION
    #Mon Jul 11 02:26:08 PDT 2016
    storageID=DS-ac4b9435-3b8d-4482-9150-ae95ebae46d8
    #保证这个属性和namenode中的值一致
    clusterID=CID-22f38c16-19a9-4dae-890e-a6a9056b3b58
    cTime=0
    datanodeUuid=b5f753e3-fb28-4f9d-b71a-b36333149a7c
    storageType=DATA_NODE
    layoutVersion=-56
    
    3 重新启动hdfs。
    
    ----------------------------------------------------------------------
    
    --启动hdfs
    $ start-dfs.sh 
    
    --启动成功后就可对hdfs进行一下操作,类似于普通的文件系统。
    $ $HADOOP_HOME/bin/hadoop fs -help 
    --这个命令列出了所有关于hdfs的操作指令,创建 更新 修改 和删除等。hadoop也提供了一套接口(后面学习到java hadoop编程时再研究)给客户端调用来实现这些功能。
    
    --停止hdfs
    $ stop-dfs.sh
    

    结束语:
    学习笔记比较粗糙,如有不适请包涵O(∩_∩)O~。

    相关文章

      网友评论

          本文标题:hadoop2.*学习笔记二(HDFS伪分布式)

          本文链接:https://www.haomeiwen.com/subject/gzjjjttx.html