yao
  • 前言
  • Mac环境配置
    • 1.python配置
  • 部署安装
    • 博客blog文档md模板
    • linux安装python3
    • Docker部署
      • Compose-bigdatabase-单组件启动(docker)
      • Compose-Spark组件-单独启动(docker)
      • Docker-通过dockerfile构建镜像(需测试)
      • docker-yaosong5仓库dockerImages汇总
      • Docker基础镜像中-所有home配置
    • gp部署
      • tt
      • 命令和第二次搭建-ok
      • gp搭建遇到的错误
      • gp集群搭建①-下载greenplum
      • gp集群搭建②-新建用户免密登录
      • gp集群搭建③-greenplum系统搭建
  • 实际问题解决
    • kafka异常
    • 数仓-解决hive处理异常json命令行转义字符的问题
  • 数据分析
    • 数据分析总结-pandas
    • 数据分析总结-numpy
  • 应用环境
    • Docker环境启动流程
Powered by GitBook
On this page
  • docker 操作命令:
  • docker容器挂载
  • dockerfile
  • 单独启动namenode
  • 启动datanode
  • 启动ResourceManager 服务
  • 启动nodemanager
  • 执行多条命令
  • docker-compose

Was this helpful?

  1. 部署安装
  2. Docker部署

Compose-bigdatabase-单组件启动(docker)

PreviousDocker部署NextCompose-Spark组件-单独启动(docker)

Last updated 6 years ago

Was this helpful?

[TOC]

docker 操作命令:

实时查看 docker 容器日志

docker logs -f -t --tail 100 kanbigdata_namenode_1

docker logs -f -t --tail 100 namenode

docker容器挂载

前目录为宿主机目录,后目录为容器目录

compose文件中:
volumes:
    - /Users/yaosong/Yao/share/hadoop/dfs/name:/root/hadoop/dfs/name
shell命令:
    -v : docker run -it -v /test:/soft centos /bin/bash

引用

dockerfile

自己更改,引用的包为基础centos镜像

# hadoop镜像封装
FROM openjdk:8u131-jre-alpine
MAINTAINER <yaosong5>
# 设置一些系统环境变量(字符集和时区)
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV TZ=Asia/Shanghai

# 安装一些必需的软件包,同步时区 【标记*1】
RUN apk --update add wget bash tzdata \
    && cp /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

# 设置HADOOP相关的环境变量,这里我们使用2.8.4版本
ENV HADOOP_VERSION 2.8.4
ENV HADOOP_PACKAGE hadoop-${HADOOP_VERSION}
ENV HADOOP_HOME=/usr/hadoop
ENV PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

# Hadoop安装
RUN wget http://www.apache.org/dist/hadoop/common/${HADOOP_PACKAGE}/${HADOOP_PACKAGE}.tar.gz && \
    tar -xzvf $HADOOP_PACKAGE.tar.gz && \
    mv $HADOOP_PACKAGE /usr/hadoop && \
    # 删除安装包,减少镜像大小
    rm $HADOOP_PACKAGE.tar.gz && \
    # 创建一系列HDFS需要的文件目录
    mkdir -p /root/hadoop/tmp && \
    mkdir -p /root/hadoop/var && \
    mkdir -p /root/hadoop/dfs/name && \
    mkdir -p /root/hadoop/dfs/data && \
    mkdir $HADOOP_HOME/logs && \
    # 格式化NameNode元数据
    $HADOOP_HOME/bin/hdfs namenode -format  -Ddfs.namenode.name.dir=/root/hadoop/dfs/name -format

WORKDIR $HADOOP_HOME

构建Dockerfile 构建镜像 docker build -f Dockerfile -t hadoop:v1 . docker build -f Dockerfile -t hadoop:v2 .

docker build -f Dockerfile -t yaosong5/bigadata:3.0 .

单独启动namenode

原来是 /root/hadoop/dfs/name 在格式化中为 /tmp/hadoop-root/dfs/name

hadoop:v1 hdfs namenode \
hadoop:v1 hdfs namenode -Ddfs.namenode.name.dir=/root/hadoop/dfs/name -format -force \
猜想测试
hadoop:v1 hdfs namenode -Ddfs.namenode.name.dir=/usr/hadoop/namenode -format -force \
yaosong5/hadoop:1.0 hdfs  namenode \
docker run -d --name namenode \
--net=br -h namenode \
 --volumes-from  datavol \
yaosong5/bigadatabase:1.0   hdfs  namenode \
-Dfs.defaultFS=hdfs://0.0.0.0:9000 \
-Ddfs.namenode.name.dir=/usr/hadoop/namenode \
-Ddfs.replication=2 \
-Ddfs.http.address=0.0.0.0:50070 \
-Ddfs.namenode.datanode.registration.ip-hostname-check=false \
-Ddfs.permissions.enabled=false \
-Ddfs.namenode.safemode.threshold-pct=0

执行sh -c 多条命令

docker run -d --name namenode \
--net=br -h namenode \
-v /Users/yaosong/Yao/share/hadoop/dfs/namenode:/usr/hadoop/namenode \
yaosong5/hadoop:1.0 sh  -c "hdfs namenode -Ddfs.namenode.name.dir=/usr/hadoop/namenode -format -force  &&   hdfs  namenode
-Dfs.defaultFS=hdfs://0.0.0.0:9000
-Ddfs.namenode.name.dir=/usr/hadoop/namenode
-Ddfs.replication=3
-Ddfs.http.address=0.0.0.0:50070
-Ddfs.permissions.enabled=false
-Ddfs.namenode.datanode.registration.ip-hostname-check=false
-Ddfs.permissions.enabled=false
-Ddfs.namenode.safemode.threshold-pct=0
"

启动datanode

docker run -d --name datanode \
 --volumes-from  datavol --net=br \
-v /Users/yaosong/Yao/share/hadoop/dfs/datanode:/usr/hadoop/datanode \
--link namenode \
yaosong5/hadoop:1.0 hdfs datanode   \
-fs hdfs://namenode:9000 \
-Ddfs.datanode.data.dir=/usr/hadoop/datanode \
-Ddfs.permissions.enabled=false

启动ResourceManager 服务

docker run -d --name resourcemanager \
--net=br  -h resourcemanager \
yaosong5/hadoop:1.0 yarn resourcemanager \
-Dfs.defaultFS=hdfs://namenode:9000 \
-Dmapreduce.framework.name=yarn \
-Dyarn.resourcemanager.hostname=resourcemanager \
-Dyarn.resourcemanager.address=resourcemanager:8032 \
-Dyarn.resourcemanager.scheduler.address=resourcemanager:8030 \
-Dyarn.resourcemanager.resource-tracker.address=resourcemanager:8031 \
-Dyarn.resourcemanager.webapp.address=0.0.0.0:8088

需要在yarn-site.xml加上配置

<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>master:8030</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>master:8031</value>
</property>

启动nodemanager

docker run -d --name nodemanager \
--net=br --link resourcemanager \
yaosong5/hadoop:1.0 yarn nodemanager \
-Dfs.defaultFS=hdfs://namenode:9000 \
-Dmapreduce.framework.name=yarn \
-Dyarn.resourcemanager.hostname=resourcemanager \
-Dyarn.nodemanager.aux-services=mapreduce_shuffle \
-Dyarn.nodemanager.resource.memory-mb=2048 \
-Dyarn.nodemanager.resource.cpu-vcores=1 \
-Dyarn.nodemanager.vmem-check-enabled=false

执行多条命令

sh -c " "
"-Dyarn.resourcemanager.address=resourcemanager:8032",
"-Dyarn.resourcemanager.scheduler.address=resourcemanager:8030",
"-Dyarn.resourcemanager.resource-tracker.address=resourcemanager:831",
docker stop namenode
docker rm  namenode
docker stop datanode
docker rm  datanode
docker stop  resourcemanager
docker rm  resourcemanager
docker stop nodemanager
docker rm nodemanager

docker stop datanode1
docker rm  datanode1
docker stop datanode2
docker rm  datanode2

docker-compose

version: '2'
services:
  web:
    image: dockercloud/hello-world
    ports:
      8080
         tworks:
      front-tier
      back-tier

Version 1 file format only. In version 2, use network_mode.

网络模式。 使用与 docker client --net参数相同的值。 container:...形式可以接受服务名称,而不是容器名称或 ID。

一键启动docker-compose.yml编排的所有服务

docker-compose -f docker-compose.yml up -d

docker-compose -f /Users/yaosong/Yao/docker-compose/bigdatabase.yml up -d

docker compose 版本 3 语法需要 docker 版本 1.13 和 docker-compose 版本 1.10(请参阅发行说明)。 有关版本兼容性列表和升级说明,请参阅发行说明。

请注意,版本 3 语法是为 docker swarm 模式设计的,它最初是docker stack deploy在 docker 版本 1.13 中支持的。 如果您仍在使用docker-compose自己,则没有太多理由升级到版本 3 语法。

另请参阅撰写文件版本控制页面,该页面描述了不同 yml 版本之间的差异。

docker-machine ssh default 'mkdir -p ~/share && sudo mount -t vboxsf share ~/share' 感受: 通过这种方式,可以直接只需要保证有包,然后参数用命令行的配置即可,每次改动无需更改到镜像,可以很方便的读取,不需要每次臃肿的更改,打包镜像

问题: 未能访问(待解决) 读取本地配置的思路还需要完善 hue的集成及其他的组件的集成 docker还有很多相关的知识还需要进一步的学习 需要将近期的总结发布到博客上

compose和docker版本对比

基于 docker 的大数据架构
https://stackoverflow.com/questions/43664866/how-to-check-the-docker-compose-file-version
http://www.ywnds.com/?p=13097