hadoop 测试环境搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gang950502/article/details/73351187

hdfs 测试环境搭建

  1. 新建4个虚拟机
    这里写图片描述
    操作系统选用 CentOS-7-x86_64-Everything-1503-01.iso/(win10 64位/vm12)

    安装中选择基本服务器类型安装。在创建普通用户时赋予管理员权限,方便测试。

  2. 同步系统时间,要求所有机器时差小于30秒。

    由于在VM上安装,时间自动统一。

  3. 由于后期有大量测试任务,需要配置四台机器间的静态IP访问,VM网络模式选择NET方式。
    Linux系统中的配置可参考Linux静态IP配置
    这里写图片描述
    配置完后在四台机器上/etc/hosts 中添加以下四个地址解析,并重启网卡.

    127.0.0.1   vm51 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         vm51 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.40.50 vm50
    192.168.40.52 vm52
    192.168.40.53 vm53
     ##注意其中 针对自身地址解析放在127和::1中,否则在配置ssh免密码登录时会失败(centos 7)
  4. 由于节点需要执行本地的一个start-dfs.sh的脚本,因此需要配置节点对自身的ssh免密码登录。需要在每个节点执行以下命令。(注意:每个节点都需要执行一次)

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    ssh vm50(节点自身名称)

    如果还不行就要执行这条命令

    chmod 600 ~/.ssh/authorized_keys
    原因参考 SSH本机免登陆密码

  5. 同理需要配置vm50对从节点vm51,vm52,vm53 的免密码登录

    Created with Raphaël 2.1.0 机器50要免密码登录机器53 机器50 机器50 机器53 机器53 发送本地ssh授权中53的公钥 53机器验签成功后 发送53机器登录密码 发送53密码 登录成功
    
    #在vm51上执行下边的命令,发送公钥到子节点
    
    scp id_dsa_node1.pub ggg@vm51:/home/ggg/.ssh
    scp id_dsa_node1.pub ggg@vm52:/home/ggg/.ssh
    scp id_dsa_node1.pub ggg@vm53:/home/ggg/.ssh
    
    #在vm51,vm52,vm53  上分别执行,追加子节点对主节点的证书认证
    
    cat ~/.ssh/id_dsa_node1.pub >> ~/.ssh/authorized_keys
    rm ~/.ssh/id_dsa_node1.pub
  6. 上传并解压hadoop压缩文件至四台服务器,并解压。版本遵循版本选择中的标准,本次选用2.5.1 X64位。
    上传后在根目录建一个新文件夹用来专门安装hadoop

    
    sudo mkdir /hadoop
    sudo chown ggg:ggg /hadoop
    cd /hadoop && tar -zxvf hadoop-2.5.1_x64.tar.gz
  7. 配置hadoop中JAVA路径(JAVA版本:版本选择)
    注意此处即使系统jdk版本符合要求也要重新下载一个jdk,系统自带jdk目录结构不符合hadoop调用方法,
    但新jdk解压后不必替换环境变量,可直接修改hadoop的读取路径即可。
    shell
    # 查看该文件25行是一个修改JAVA路径的选项,可修改此处。
    [ggg@localhost hadoop]$ awk "NR==25" /hadoop/hadoop-2.5.1/etc/hadoop/hadoop-env.sh
    export JAVA_HOME=${JAVA_HOME}
    /hadoop/jdk1.7.0_07
  8. 修改namenode 节点IP,端口,临时数据文件

    1. 该文件是 /hadoop/hadoop-2.5.1/etc/hadoop/core-site.xml
    2. 增加一个临时数据存放目录 /hadoop/tmpdata
    3. 编辑该文件下边位置

      扫描二维码关注公众号,回复: 3173670 查看本文章
      <configuration>
      </configuration>
    4. 增加如下信息

      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://vm50:9000</value>
      </property>
      <property>
          <name>hadoop.tmp.dir</name>
          <value>/hadoop/tmpdata</value>
      </property>
      
  9. 修改从节点连接信息
    1. 该文件是/hadoop/hadoop-2.5.1/etc/hadoop/hdfs-site.xml
    2. 编辑该文件下边位置

      <configuration>
      </configuration>
  10. 增加以下信息

    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>vm51:50090</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.https-address</name>
    <value>vm51:50091</value>
    </property>
  11. 增加datanode节点信息

    vi /hadoop/hadoop-2.5.1/etc/hadoop/slaves
    #增加如下信息
    vm51
    vm52
    vm53
  12. 增加从节点信息

    echo "vm51" > /hadoop/hadoop-2.5.1/etc/hadoop/masters
  13. 主节点到此配置完成,下边开始配置从节点

    # 复制主节点到从节点
    $ mv /hadoop/hadoop-2.5.1/share/doc /hadoop
    $ scp -r /hadoop/hadoop-2.5.1 ggg@vm51:/hadoop
    $ scp -r /hadoop/hadoop-2.5.1 ggg@vm52:/hadoop
    $ scp -r /hadoop/hadoop-2.5.1 ggg@vm53:/hadoop
    # 在四台机器上执行下边三条命令
    $ su root -c 'echo "export HADOOP_HOME=/hadoop/hadoop-2.5.1" >> /etc/profile'
    $ su root -c 'echo "export PATH=\$PATH:/hadoop/hadoop-2.5.1/bin:/hadoop/hadoop-2.5.1/sbin" >> /etc/profile'
    $ source /etc/profile

测试

```
#主节点执行
$ hdfs namenode -format
/hadoop/hadoop-2.5.1/bin/hdfs: /hadoop/jdk1.7.0_07/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
/hadoop/hadoop-2.5.1/bin/hdfs:行262: /hadoop/jdk1.7.0_07/bin/java: 成功
服务器1sudo yum install  glibc.i686(4台机器都要配置,否则会在下一步失败)
```

执行结果:
这里写图片描述

```
[ggg@localhost current]$ cd /hadoop/tmpdata/dfs/name/current
[ggg@localhost current]$ ls
fsimage_0000000000000000000  fsimage_0000000000000000000.md5  seen_txid  VERSION
#出现了一个警告
[ggg@localhost current]$ start-dfs.sh 
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
# 测试警告依然没有消失
```

放开主节点对外防火墙,然后则可在主机上访问主节点50070端口查看主节点信息。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/gang950502/article/details/73351187