zoukankan      html  css  js  c++  java
  • 大数据分布式微服务实战步骤

    一.下载安装docker

     1.windows系统中Docker目前仅有win10专业版和企业版的安装包,win7/win8/win10家庭版需要通过docker toolbox来安装。CE为免费版

           docker toolbox下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

           双击exe文件,按默认步骤安装,安装过程中选择插件时全部勾选即可,安装完成桌面会显示三个图表,如下图:

     2.双击桌面上的Docker Quickstart Terminal图标,进入Docker客户端。

    国内下载较慢,可以手动下载,放到此目录下:C:UsersLENOVO.dockermachinecache

    出现小鲸鱼图案表示登录成功

    3.在Docker客户端中执行docker version来查看Docker版本

     

    如上图所示,即安装成功

    二.搭建环境

     1.安装zookeeper: docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper confluent/zookeeper

        如果name以被占用,执行 docker rm -f $(docker ps -a -q) 把所有已启用的container删掉

     2.安装kafka:  docker run -d -p 9092:9092 -e KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 -e KAFKA_ADVERTISED_PORT=9092 --name kafka --link zookeeper:zookeeper confluent/kafka

    • windows设置127.0.0.1,没有建立IP映射可能取不到docker的ip号,所以直接设置为固定IP(不会设置映射,待研究)

    • docker run -d -p 9092:9092 -e KAFKA_ADVERTISED_HOST_NAME=192.168.99.100 -e KAFKA_ADVERTISED_PORT=9092 --name kafka2 --link zookeeper:zookeeper confluent/kafka

     3.docker ps 查看docker中容器运行状态

    • docker ps -a 查看所有容器(包括停止运行的容器)状态
    • docker start 容器id或容器名    启动容器(先启动zookeeper再启动kafka)
    • docker stop 容器id或容器名/docker kill 容器id或容器名  停止容器
    • docker restart 容器id或容器名  重启容器
    • docker rm 容器id或容器名  删除容器

     4.使用 virtualenv进行开发环境隔离,不会和其他项目版本冲突:

    • 先安装python
    • 安装virtualenv:pip install virtualenv
    • 创建虚拟环境:virtualenv pydir
    • 激活虚拟环境:cd pydir/Scripts  执行  ./activate 成功后命令行前边会有(pydir)字样
    • 取消激活:执行 ./deactivate.bat

      如果使用virtualenv的话,需要进入相对应的路径,这样一来就相对麻烦,但是可以通过使用virtualwrapper来简化对虚拟环境的操作。

    • 下载windows安装包:pip install virtualenvwrapper-win
    • 配置环境变量:WORKON_HOME,变量值为你虚拟环境的目录。

    • 通过virtualenvwrapper新建虚拟环境:mkvirtualenv myblog
    • 查看安装的所有虚拟环境:workon
    • 进入虚拟环境:workon myblog
    • 退出虚拟环境:deactivate
    • 如果这个虚拟环境不打算要了,直接将这个目录删掉就可以了。

    5.安装案例中用到的python依赖

    • pip install schedule
    • pip install kafka_python
    • pip install requests
    • pip freeze > requirements.txt  可以打出当前安装的依赖
    • pip install -r requirements.txt   迁移环境或者别人使用同样环境时,可以同步环境,不需要一步一步安装

    6.查看docker配置的命令

    • docker-machine env
    • docker-machine.exe  ls

    三.案例,用python编写脚本查询gdax比特币交易平台接口,处理返回的数据

    1.检验执行脚本需要传入的参数: python dataproducer.py -h 

    2.执行dataproducer脚本:python dataproducer.py BTC-USD gdax 192.168.99.100:9092

    3.执行dataconsumer脚本: python dataconsumer.py gdax 192.168.99.100:9092

    四.使用docker快速部署

    1.简单命令

    • docker pull
    • docker bulid
    • docker run
    • docker exec 登录
    • docker ps
    • docker kill
    • docker rm 删除container
    • 删除全部container:  docker rm -f $(docker ps -a -q)
    • docker rmr 删除image

    2.编写文件Dockerfile

    # Docker image containing dataproducer and dataconsumer

    FROM ubuntu:latest
    MAINTAINER Wang "fan.wang@bittiger.io"

    RUN apt-get update
    RUN apt-get install -y python python-pip wget
    COPY ./dataproducer.py /
    COPY ./dataconsumer.py /
    COPY ./requirements.txt /
    RUN pip install -r requirements.txt

    CMD python dataproducer.py BTC-USD gdax kafka:9092

    3.在docker中执行build命令: docker build --tag=big_data_producer .          最后有个点,表示安装在当前目录

    4.查看images:  docker images

       删除images: docker rmi imageid -f

    5.注册并登录dockerhub:  docker login 

    6.打上传地址tag: docker tag imageid username/big_data_producer:master

    7.上传image:  docker push username/big_data_producer

    8.下载别人的image:  docker pull -a qianmao/cs502_week1

    五.安装hbase

    1.配置hosts: vim /etc/hosts     127.0.0.1 myhbase

    2.启动hbase:  docker run -d -h myhbase -p 2182:2182 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 --name hbase harisekhon/hbase

    3.进入hbase: docker exec -it hbase /bin/bash     执行 hbase shell即可

    4.创建表

    • create 't', 'f1', 'f2'
    • create 't1', {NAME=>'f1', VERSIONS=>5}  同一个单元格可以放5个历史版本

    5.描述表

    • describe 't1'

    6.插入数据

    •  put 't1', 'row1', 'f1:c1', 'value1',1526222761
    •  put 't1', 'row1', 'f1:c1', 'value2',1526222762
    •  put 't1', 'row1', 'f1:c1', 'value3',1526222763
    •  put 't1', 'row1', 'f1:c1', 'value4',1526222764
    •  put 't1', 'row1', 'f1:c1', 'value5',1526222765
    •  put 't1', 'row1', 'f1:c1', 'value6',1526222766

    7.查询数据

    • scan 't1'
    • get 't1', 'row1'
    • get 't1', 'row1', 'f1:c1'
    • get 't1', 'row1', {COLUMN=>'f1:c1', VERSIONS=>5}  查询历史版本的值

     8.删除表中数据

    • delete 't1', 'row1', 'f1:c1', 1526222763

    9.删除表

    • disable 't1'
    • drop 't1'

    六.编写datastroage脚本,保存数据到hbase

    1.安装happybase: pip install happybase

    2.kafka连接hbase中的zookeeper: 

    docker run -d -p 9092:9092 -e KAFKA_ADVERTISED_HOST_NAME=192.168.99.100 -e KAFKA_ADVERTISED_PORT=9092 --link hbase:zookeeper confluent/kafka

    3.执行脚本datastroage:

     python datastorage.py gdax 192.168.99.100:9092 gdax myhbase

    七.spark

    1.安装pyspark: pip install pyspark

    2.进入spark: pyspark

       退出spark: exit()

    3.使用spark统计文档中单词出现频次:

    • text = sc.textFile('test.txt')
    • counts = text.flatMap(lambda line:line.split(" ")).map(lambda word :(word, 1)).reduceByKey(lambda a, b: a+b)
    • counts.collect()

    4.编写datastraming代码

    5.启动zookeeper和kafka,下载spark-streaming-kafka-0-8_2.11-2.4.3.jar

    6.执行脚本: spark-submit --jars spark-streaming-kafka-0-8_2.11-2.4.3.jar datastream.py gdax average_price 127.0.0.1:9092 5

    八.Redis

    1.安装redis: pip install redis

    2.编写脚本redis_publisher.py

    3.启动zookeeper, kafka, redis:   docker run -d -p 6379:6379 --name redis redis:alpine

    4.执行脚本:  python redis_publisher.py gdax 127.0.0.1:9092 price 127.0.0.1 6379

    5.登录redis: docker exec -it redis redis-cli

    6.订阅channel:  subscribe price

    九.Node.js

    1.安装node, 查看版本: node -v

    2.查看版本: npm -v

    3.新建node文件夹, 创建npm模板: npm init --yes

    4.安装

    • npm install socket.io  --save  如果不创建npm模板,需要加--save来保存依赖
    • npm install express
    • npm install redis
    • npm install jquery
    • npm install minimist
    • npm install bootstrap
    • npm install d3@3.5.17
    • npm install nvd3

    5.编写index.js index.html main.js 脚本

    6.启动zookeeper, kafka, redis

    7.启动spark: spark-submit --jars spark-streaming-kafka-0-8_2.11-2.4.3.jar datastream.py gdax average_price 127.0.0.1:9092 5

    8.执行redis_publisher.py: python redis_publisher.py gdax 127.0.0.1:9092 price 127.0.0.1 6379

    9.启动node.js: node index.js --redis_host=localhost --redis_port=6379 --redis_channel=price --port=3000

    10.访问浏览器: localhost:3000 查看图表

  • 相关阅读:
    二叉排序树
    安全的终止线程的两种方法
    图的广度优先遍历(BFS)
    图的深度优先遍历(DFS)
    volatile的应用
    二叉树的遍历
    Java-反射
    Java--泛型
    单例模式
    剑指Offer--对称二叉树
  • 原文地址:https://www.cnblogs.com/fanshudada/p/10849343.html
Copyright © 2011-2022 走看看