Hadoop 伪分布式环境搭建

作者: danielAck | 来源:发表于2018-07-26 00:01 被阅读7次

    Hadoop伪分布式安装步骤

    JDK 安装(1.8版本及以上)

    貌似如果JDK是1.7的话会遇到一些莫名的BUG...
    比如编译Spark的时候就卡了很久!!

    解压:
    tar -zxvf jdk-7u79-linux-x64.tar.gz -C ~/app

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

    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_79
    export PATH=$JAVA_HOME/bin:$PATH
    

    使得环境变量生效: source ~/.bash_profile

    验证Java是否配置成功: java -version

    安装ssh

    sudo yum install ssh
    

    配置免密码登录

    ssh-keygen -t rsa ==> 会生成密码文件到 /home/hadoop/.ssh/id_rsa 中
    cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_k eys ==> 将生成的rsa密钥添加到认证密钥中
    

    下载并解压hadoop

    下载:

    直接去cdh网站下载 ==> http://archive.cloudera.com/cdh5/cdh/5/

    解压:

    tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /usr/local
    //将 hadoop 文件夹解压到 /usr/locla 文件夹下
    

    配置文件的修改(hadoop_home/etc/hadoop)##

    hadoop-env.sh 文件中修改:

    export JAVA_HOME=/usr/local/jdk1.7.0_80
    

    core-site.xml 文件中添加:

     <property>
          <name>fs.defaultFS</name>
          <value>hdfs:// localhost:8020</value>
     </property>
     <property>
          <name>hadoop.tmp.dir</name>
          <value>/hadoop/tmp</value>
     </property>
     注:hadoop2.X 版本 将端口从 9000 改为 8020
    

    hdfs-site.xml 文件中添加:

     <property>
          <name>dfs.replication</name>
          <value>1</value>
     </property>
      注:只有一个结点,所以副本设置为1
    

    slaves : 有多少个集群,就将主机名添加到slaves 中

    启动 HDFS

    格式化文件系统(仅第一次执行即可,不要重复执行):./hadoop namenode -format

    也可以配置hadoop环境变量之后直接执行: hadoop namenode -format

    启动hdfs: sbin/start-dfs.sh

    验证是否启动成功:

    jps
    DataNode
    SecondaryNameNode
    NameNode
    

    浏览器访问方式: http://ip:50070

    停止 HDFS

    sbin/stop-dfs.sh
    

    其他问题

    启动Hadoop HDFS 而DataNode 无法启动的问题

    可能是之前执行 format 操作之后 导致 DataNode 和 NameNode 的 clusterID不一样

     解决方法:

     1. 进入 Hadoop 中 core-site.xml 文件中配置的Hadoop 文件存放路径,即 hadoop.tmp.dir

     2. 进入 dfs 文件中,将 data 文件夹中 VERSION 文件中的 clusterID 改为 name文件夹中 VERSION文件中的 clusterID

    运行 Hadoop 或者 Spark 出现 (null) entry in command string: null chmod 0644

    当我们尝试将中间计算结果写入本地文件的时候,可能会报出(null) entry in command string: null chmod 0644的错误

    解决办法一:

    • 下载 winutils.exe 相关文件

      https://github.com/srccodes/hadoop-common-2.2.0-bin将所有的相关文件下载下来

    • 将下载的整个文件夹放到某个目录下, eg:C:\your_folder\

    • 在程序的开头添加代码:

      System.setProperty("hadoop.home.dir", "c:\\your_folder\\")
      //第二个参数就是下载的文件夹所在的路径
      

    相关文章

      网友评论

        本文标题:Hadoop 伪分布式环境搭建

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