Giter Club home page Giter Club logo

hadoop-docker's Introduction

#基于Docker的Hadoop开发测试环境使用说明

0.内容

  1. 基本软件环境介绍
  2. 使用方法简介
  3. 已知问题
  4. 注意事项

1.基本软件环境介绍

###1.1 软件版本

  • 操作系统: CentOS 6
  • Java环境: OpenJDK 8
  • Hadoop: 2.7.2
  • Spark: 2.1.0
  • Hive: 2.1.1
  • HBase: 1.2.2
  • Zookeeper: 3.4.8
  • 基于docker-compose管理镜像和容器,并进行集群的编排
  • 所有软件的二进制包均通过网络下载。其中包含自行编译的Hadoop和Protobuf二进制包,保存在Github上,其它软件的二进制包均使用Apache官方镜像。

###1.2 镜像依赖关系

镜像依赖关系图 上图中,灰色的镜像(centos:6)为docker hub官方基础镜像。其它镜像(twinsen/hadoop:2.7.2等)都是在下层镜像的基础上实现的。这一镜像之间的依赖关系,决定了镜像的编译顺序.

2.使用方法简介

###2.1 安装docker 具体安装方法请自行百度,安装完成后,在命令行下输入docker info进行测试,输出结果如下图所示,说明安装成功 docker安装测试结果

###2.2 构建镜像 首先,下载工程文件( https://github.com/ruoyu-chen/hadoop-docker/archive/1.1.zip ),解压到任意目录下。 接下来,可以在工程根目录下(包含有docker-compose-build-all.yml文件),在系统命令行中,依次使用下列命令构建镜像:

  • 拉取MySQL 5.7 官方镜像

docker pull mysql:5.7

  • 拉取CentOS 6 官方镜像

docker pull centos:6

  • 拉取基本操作系统和OpenJDK环境,包含CentOS 6和OpenJDK 8

docker pull twinsen/os-jvm:centos6-openjdk8

  • 拉取Hadoop环境,包含Hadoop 2.7.2

docker pull twinsen/hadoop:2.7.2

  • 拉取Hive环境,包含Hive 2.1.1

docker pull twinsen/hive:2.1.1

  • 拉取Spark环境,包含Spark 2.1.0

docker pull twinsen/spark:2.1.0

###2.3 环境准备 完成上一步的镜像编译工作后,在系统命令行中,可以使用docker images命令查看目前docker环境下的镜像,如下图所示: 查看docker本机镜像列表 为了方便使用,在工程根目录下放置了一个docker-compose.yml文件,这一文件中已经预先配置好了由3个slave节点和1个master节点组成的Spark集群。

在使用集群之前,需要先完成初始化


#[创建容器]
docker-compose up -d
#[格式化HDFS。第一次启动集群前,需要先格式化HDFS;以后每次启动集群时,都不需要再次格式化HDFS]
docker-compose exec spark-master hdfs namenode -format
#[初始化Hive数据库。仅在第一次启动集群前执行一次]
docker-compose exec spark-master schematool -dbType mysql -initSchema
#[将Spark相关的jar文件打包,存储在/code目录下,命名为spark-libs.jar]
docker-compose exec spark-master jar cv0f /code/spark-libs.jar -C /root/spark/jars/ .
#[启动HDFS]
docker-compose exec spark-master start-dfs.sh
#[在HDFS中创建/user/spark/share/lib/目录]
docker-compose exec spark-master hadoop fs -mkdir -p /user/spark/share/lib/
#[将/code/spark-libs.jar文件上传至HDFS下的/user/spark/share/lib/目录下]
docker-compose exec spark-master hadoop fs -put /code/spark-libs.jar /user/spark/share/lib/
#[关闭HDFS]
docker-compose exec spark-master stop-dfs.sh

###2.4 启动及停止集群

下面简要介绍启动和关闭Spark集群的步骤(以下步骤均在命令行环境下完成,在工程根目录下执行)

  • 启动集群进程,依次执行:

#[启动HDFS]
docker-compose exec spark-master start-dfs.sh
#[启动YARN]
docker-compose exec spark-master start-yarn.sh
#[启动Spark]
docker-compose exec spark-master start-all.sh
  • 停止Spark集群,依次执行:

#[停止Spark]
docker-compose exec spark-master stop-all.sh
#[停止YARN]
docker-compose exec spark-master stop-yarn.sh
#[停止HDFS]
docker-compose exec spark-master stop-dfs.sh
#[停止容器]
docker-compose down

###2.5 开发与测试过程中的集群使用方法

目前集群中采用的是1个master节点和3个slave节点的分配方案,可以通过调整docker-compose配置文件以及相应软件的配置文件来实现集群扩容,暂时无法做到自动化扩容。

编写程序可以使用任意的IDE和操作系统,程序编写完成后,打包为jar文件,然后放在工程根目录下的./volume/code/目录下。任何一个集群环境下,都会在集群启动时将code目录挂载在master节点的/code路径下。

如果要执行wordcount程序(在volume/code/tests/mapreduce-test目录下已经包含了)。在启动集群并启动各服务进程后。执行下列语句,可以进入master节点的命令行环境:

docker-compose exec spark-master /bin/bash

然后可以进入/code目录提交任务,完成计算。如下图所示: 命令行环境下提交任务 ##3.已知问题

待完善 ##4.注意事项

待完善

hadoop-docker's People

Contributors

ruoyu-chen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hadoop-docker's Issues

0 datanode(s) running

执行docker-compose exec spark-master jar cv0f /code/spark-libs.jar -C /root/spark/jars/ .
报错:
put: File /user/spark/share/lib/spark-libs.jar.COPYING could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.

hive集群 还没有完善

先感谢这个repo ,非常方便的就搭建了一个集群。
希望抽空能把hive,hbase的配置完善了,
谢谢!

格式化hdfs namenode的时候保存。是没有权限,请问有没有遇到这种情况。

java.io.IOException: Cannot create directory /works/dfs/name/current
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:337)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:548)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:569)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:161)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:991)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1429)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1554)
17/05/19 17:15:52 ERROR namenode.NameNode: Failed to start namenode.
java.io.IOException: Cannot create directory /works/dfs/name/current
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:337)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:548)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:569)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:161)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:991)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1429)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1554)
17/05/19 17:15:52 INFO util.ExitUtil: Exiting with status 1

一跑就卡死

数据节点什么的都正常 yarn一跑东西就死了.....dfs也会死,如果起了spark都会死,非得重启,有时候hdfs ls都很卡。有时候cpu很高,大部分时候cpu 内存都不高 就是负载异常高 有时候能到三四百 系统直接卡死
image

怎么访问hbase

怎么单独用其他的application访问内部的hbase数据库,ip地址端口怎么暴露出来?

端口问题

您好,能将mysql hive hadoop对外映射的端口 写到readme中么

外网访问问题

我把docker环境配到了云主机上,成功之后在浏览器访问50070端口能正常 其他的端口全都无法访问到ui界面 但是telnet端口号是可以连通的,是什么原因 求解答

zk安装问题

请问是不是少安装zk了,这样是只能启动hadoop和hive,hbase需要zk

编译时报错,提示hadoop-2.7.2.tar.gz not in gzip format

你好,我在编译hadoop时会报如下错误
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
ERROR: Service 'hadoop' failed to build: The command '/bin/sh -c wget https://github.com/ruoyu-chen/hadoop-docker/raw/master/dist/hadoop-2.7.2.tar.gz && tar -xzvf hadoop-2.7.2.tar.gz -C /root/ && mv /root/hadoop-2.7.2 $HADOOP_HOME && rm -rf hadoop-2.7.2.tar.gz && rm -rf $HADOOP_HOME/bin/.cmd && rm -rf $HADOOP_HOME/sbin/.cmd && rm -rf $HADOOP_HOME/sbin/all && rm -rf $HADOOP_CONF_DIR/.cmd && rm -rf $HADOOP_CONF_DIR/.template && rm -rf $HADOOP_CONF_DIR/*.example && wget https://github.com/ruoyu-chen/hadoop-docker/raw/master/dist/protobuf.tar.gz && tar -xzvf protobuf.tar.gz -C /root/ && rm -rf protobuf.tar.gz' returned a non-zero code: 2

我手动解压远dist目录下的gz包和用命令手动下载的包都报同样的错误,请问是不是那个文件有不完整导致的?

CPU 100%

我在服务器按照说明运行集群后,CPU 100%,有遇到过吗?

启动的时候报错

org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException: Datanode denied communication with namenode because hostname cannot be resolved (ip=172.17.0.1, hostname=172.17.0.1): DatanodeRegistration(0.0.0.0:50010, datanodeUuid=9b235124-3b0c-4bfc-bf8c-b421fcd1ee57, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=CID-0aa8d0a2-aad0-4e07-a361-36b926bc2a9d;nsid=888616734;c=0)
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:863)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:4528)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:1285)
at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:96)
at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtocolProtos.java:28752)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:969)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2045)
^C

Excellent ! 写的非常好!

我刚刚从业大数据。 主要使用 Spark, Kafka, Scala, PostgresQL.

我可不可以参与你这个 github 项目?学习,然后也慢慢作出贡献。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.