V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
trafficMGR
V2EX  ›  Hadoop

自建 5 个节点的 Hadoop 集群,以及完成 MapReduce 作业

  •  
  •   trafficMGR · 2019-01-09 20:48:52 +08:00 · 4503 次点击
    这是一个创建于 2144 天前的主题,其中的信息可能已经有所发展或是发生改变。

    集群规划和搭建过程

    搭建过程和配置文件专门用 VuePress 记录了一下:前往日志

    • 集群单个节点的配置:1VCPUs 2GB 5Mbps , 内存分配策略:参考了 Linode 的 2GB 节点配置教程

    • 服务器用的廉价的阿里云的轻量应用服务器学生版,几个同学一人一台,拼凑了一个拥有 5 个节点的集群。

    数据处理

    任务

    使用 Hive 导入社交用户数据 CSV 文件,使用 SQL 塞选出用户表中的共同爱好、共同好友。

    Map Reduce 作业问题

    在这个集群上做简单的 Map 和 Reduce 作业是极其缓慢的,从 0% 跳到 100%可能会经历数十分钟,效率堪忧。由于各个节点是同学自己买的,不能走 VPC 内网互通,只好用公网互通。👈怀疑问题会出现在这里

    Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
    2019-01-09 19:56:25,499 Stage-1 map = 0%,  reduce = 0%
    INFO  : Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
    INFO  : 2019-01-09 19:56:25,499 Stage-1 map = 0%,  reduce = 0%
    2019-01-09 19:57:26,238 Stage-1 map = 0%,  reduce = 0%
    INFO  : 2019-01-09 19:57:26,238 Stage-1 map = 0%,  reduce = 0%
    2019-01-09 19:58:26,818 Stage-1 map = 0%,  reduce = 0%
    INFO  : 2019-01-09 19:58:26,818 Stage-1 map = 0%,  reduce = 0%
    2019-01-09 19:59:27,374 Stage-1 map = 0%,  reduce = 0%
    INFO  : 2019-01-09 19:59:27,374 Stage-1 map = 0%,  reduce = 0%
    2019-01-09 20:00:27,878 Stage-1 map = 0%,  reduce = 0%
    
    ...
    
    2019-01-09 20:17:32,700 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.69 sec
    INFO  : 2019-01-09 20:17:32,700 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.69 sec
    2019-01-09 20:18:33,218 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.69 sec
    INFO  : 2019-01-09 20:18:33,218 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.69 sec
    

    测试

    使用相同的 SQL 语句换做在 E-MapReduce 上能很块跑出结果(加钱世界可及)。

    还未结束

    • Q1: 同样的 2G 内存节点,在本地虚拟机上就能正常运行,不会在 MapReduce 作业上卡数十分钟
    12 条回复    2019-01-10 18:54:03 +08:00
    skyqqcc
        1
    skyqqcc  
       2019-01-09 20:57:25 +08:00
    没玩过,看不懂
    jbiao520
        2
    jbiao520  
       2019-01-09 21:04:57 +08:00
    公网肯定不行的,这个带宽,说不定还不是一个地区的,延迟感人
    trafficMGR
        3
    trafficMGR  
    OP
       2019-01-09 21:08:01 +08:00
    @jbiao520 其实都是广州区的,带宽可能会不够,实际上我们数据量是很小的,绰绰有余了,至于节点之间会不会交换很大的数据块,这个我到不清楚。平均延迟 <=2ms
    823036978
        4
    823036978  
       2019-01-09 21:08:05 +08:00 via iPhone
    查看 hivesql 执行计划
    trafficMGR
        5
    trafficMGR  
    OP
       2019-01-09 21:26:18 +08:00
    @823036978 具体使用什么命令查看呢,我还完全是个新手,对 Hive 不熟悉。之前一直用的 Beeline 作为客户端,元数据库就用的默认的 Derby。目前之间打开 hive 命令的行工具的话,会报出 Java 运行时错误,无法实例化`..SessionHiveMetaStoreClient',看起来还是没有配置正确的样子=.=||
    823036978
        6
    823036978  
       2019-01-09 21:39:11 +08:00 via iPhone
    @trafficMGR explain hivesql
    823036978
        7
    823036978  
       2019-01-09 21:41:00 +08:00 via iPhone
    @trafficMGR 用 CDH 吧
    cye3s
        8
    cye3s  
       2019-01-09 21:45:35 +08:00 via Android
    你们 5 个人笔记本跑 linux,lan 下搭个
    whatsmyip
        9
    whatsmyip  
       2019-01-09 23:11:33 +08:00   ❤️ 2
    数据数据量不是很大的话,应该是配置的问题吧,玩的少,具体不清楚。

    跑作业任务的话,8G 的笔记本就可以了,或者向楼上说的一样,把你们每个人的笔记本放在一起,做集群。

    我之前用渣渣笔记本跑了一个 master,3 个 worker,绰绰有余,就是跑起来会卡。

    如果你对 docker 略微熟悉的话,这是之前基于 docker 部署 hadoop 跟 hive 的两篇文档:

    https://blog.newnius.com/how-to-quickly-setup-a-hadoop-cluster-in-docker.html

    https://blog.newnius.com/setup-apache-hive-in-docker.html
    trafficMGR
        10
    trafficMGR  
    OP
       2019-01-09 23:21:05 +08:00
    @whatsmyip Docker 这个主意不错,正好我也喜欢玩 Docker,而小内存节点跑 CDH 会很吃力,非常感谢!
    scalaer
        11
    scalaer  
       2019-01-10 01:13:51 +08:00 via Android
    hadoop 生态圈的服务已经被集成了, 比如像楼上说的 cdh, 还有 hdp, 有兴趣的话可以看看 apache ambari
    kex0916
        12
    kex0916  
       2019-01-10 18:54:03 +08:00
    看看 NameNode DataNode,NodeManager 等日志,有没有通信警告什么的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2832 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:20 · PVG 15:20 · LAX 23:20 · JFK 02:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.