这篇文章上次修改于 632 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

Haddop 开发测试环境搭建

此教程的目的是在一台 CentOS 服务器上利用 Docker 搭建一套具有三个节点的 Hadoop 伪集群,然后在本地开发机上使用 Java API 对 Hadoop 集群进行各种操作,比如:创建文件夹、创建文件、重命名文件、上传文件、下载文件等。

有了 Docker 大大简化了 Hadoop 的安装过程,基本没什么难度。这个教程的难点主要集中在本地开发机上传下载文件部分,这个问题只存在于我司当前的开发环境下,不具有普适性。

由于上传下载文件时需要与数据节点(DataNode)建立连接,而数据节点部署在 Docker 中,使用了一个独立的子网,从本地开发机不能直接访问该子网地址。本来在开发机上增加一条路由,将数据节点的相关地址网关设为服务器地址可以解决这个问题,奈何我司开发机和服务器不在同一个子网,使用了不同的网关,直接增加路由不起作用。

最后的解决办法挺绕,借助了 Proxifier 代理软件,还在服务器上安装了 shadowsocks-libev 代理软件,但总算把问题解决了。

先决条件

  • 一台服务器:centos-release-7-8.2003.0.el7.centos.x86_64,假定 IP 为:192.168.20.105
  • 服务器上安装了 docker:Docker version 19.03.0, build aeac9490dc
  • Hadoop 版本:2.7.5, r18065c2b6806ed4aa6a3187d77cbe21bb3dba075
  • shadowsocks-libev
  • Proxifier
  • shadowsocks 客户端

安装 Docker

请自行搜索安装教程,此处省略。

安装 Hadoop

  1. 运行 docker load -i /zzh/tar/hbase-zzh:1.0.tar 导入 Hadoop 镜像
  2. 运行 /zzh/create-network.sh 创建一个子网
  3. 运行 docker-compose -f /zzh/compose/hadoop.yml up -d 创建 Hadoop 集群容器
  4. 运行 docker exec -it master sh 进入 master 容器内部
  5. 在 master 容器内部运行 ./start-hbase.sh 启动 Hadoop 集群
  6. 该 Hadoop 集群由三个节点组成:

    • master 节点:192.166.0.21
    • slave1 节点:192.166.0.22
    • slave2 节点:192.166.0.23

安装 shadowsocks-libev

  1. 运行 docker pull teddysun/shadowsocks-libev:latest 拉取 shadowsocks-libev 最新镜像
  2. 运行 /zzh/shadowsocks-libev/start-shadowsocks.sh 创建 shadowsocks-test 容器

至此,服务端已安装配置完成,接下来将介绍开发机上的配置。

开发机配置

  1. hosts 配置

    192.166.0.21 master
    192.166.0.22 slave1
    192.166.0.23 slave2
  2. shadowsocks 客户端配置

    • 服务器地址:192.168.20.105
    • 服务器端口:15000
    • 密码:123456
    • 加密:aes-256-cfb
  3. Proxifier 配置

    • 配置 Proxy Servers

      • 依次打开 Profile->Proxy Servers...->Add...
      • Address: 127.0.0.1
      • Port: 1080
      • Protocol: SOCKS Version5
    • 配置 Proxification Rules

      • 依次打开 Profile->Proxification Rules...->Add...
      • Name: Hadoop
      • Applications: Any
      • Target Hosts: 192.166.0.0-192.166.0.255
      • Target Ports: Any
      • Action: Proxy SOCKS5 127.0.0.1

至此,开发机也已配置完成,现在你可以在开发机上自由的访问 192.166 网段,并可使用 Java API 对 Hadoop 集群进行文件上传/下载等操作。

后记

  • 若开发机和服务器在同一子网下,以上步骤中 安装 shadowsocks-libevshadowsocks 客户端配置Proxifier 配置 均可省略,取而代之的是在开发机新增一条路由:route add 192.166.0.0 mask 255.255.0.0 192.168.20.105 -p
  • 文中用到的资源,若有需要请与我联系索取。