前言

上篇文章咱们将大数据相关的一些组件都集成安装在了一个docker中

搭建大数据运行环境之一

这篇文章咱们继续 启动下该docker中的大数据相关的组件

将大数据运行环境跑起来

上篇文章的几个注意点再重申下

  • 安装包应用编译之后的包
组件的安装包不要用源码包因为源码包还需要编译打包编译的话 还需要在docker中安装编译环境

比如

# 不要下载源码包 hadoop-2.10.1-src.tar.gz 而应该下载编译之后的包 hadoop-2.10.1.tar.gz#HADOOP_URL=https://downloads.apache.org/hadoop/common/stable2/hadoop-2.10.1.tar.gz

# 北京理工大学开源软件镜像mirror.bit.edu.cnHADOOP_URL=http://mirror.bit.edu.cn/apache/hadoop/common/stable2/hadoop-2.10.1.tar.gz

  • 本地编译dokcer镜像然后上传到阿里镜像库然后其他地方使用
# 登陆阿里镜像库docker login --username=孟凡霄 --password mfx@123456 registry.cn-hangzhou.aliyuncs.com

# 生成镜像# ${dir}/hadoop 该目录指向Dockerfile文件docker build --network host -t hadoop:v1.0 ${dir}/hadoop

# 镜像文件重命名docker tag hadoop:v1.0 registry.cn-shanghai.aliyuncs.com/mengfanxiao/hadoop:v1.0

# 将镜像文件上传到阿里镜像库docker push registry.cn-shanghai.aliyuncs.com/mengfanxiao/hadoop:v1.0

镜像生成好之后分别在3台服务器上下载镜像 然后通过脚本启动镜像

# 下载镜像docker pull registry.cn-shanghai.aliyuncs.com/mengfanxiao/hadoop:v1.0# 启动镜像脚本cd /opt/bigdata/docker-hadoop-testchmod 777 hadoop.sh./hadoop.sh

该镜像脚本做的事情就是 运行docker通过docker run命令 

说明镜像已经起来接下来要做的事情就是进入镜像内部 分别启动各个组件

启动hadoop集群

先通过流程图来梳理一下启动的步骤


架构图


两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信

当active状态的NameNode的命名空间有任何修改时 会告知大部分的JournalNodes进程

standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间

standby可以确保在集群出错时,命名空间状态已经完全同步了


namenode宕机了 可以手工或者自动切换  

在hadoop1启动所有JournalNode

cd /usr/local/hadoop/sbinchmod 777 hadoop-daemons.shhadoop-daemons.sh start journalnode

多个NameNode之间共享数据方式

  • Nnetwork File Syste
通过linux共享的文件系统,属于操作系统的配置
  • Quorum Journal Node
hadoop自身的东西,属于软件的配置

手工或者自动切换到另一个NameNode提供服务

在hadoop1上格式化namenode数据

cd /usr/local/hadoop/binhdfs namenode -format  

在hadoop1上启动namenode

cd /usr/local/hadoop/sbinhadoop-daemon.sh start namenode

在hadoop2 上执行同步namenode元数据

cd /usr/local/hadoop/binhdfs namenode -bootstrapStandby 

在hadoop2上启动namenode

cd /usr/local/hadoop/sbinhadoop-daemon.sh start namenode

在hadoop1上初始化zkfc

cd /usr/local/hadoop/binhdfs zkfc -formatZK  

至此hadoop2.x hdfs完全分布式 HA 搭建完毕

HA

是双机集群系统简称 提高可用性集群是保证业务连续性的有效解决方案一般有两个或两个以上的节点且分为活动节点及备用节点

在hadoop1上停止业务

stop-dfs.sh  

在hadoop1上全面启动业务

cd /usr/local/hadoop/sbinstart-all.sh  

#启动了 2个namenode hadoop001,hadoop002Starting namenodes on [hadoop001 hadoop002]

#启动了3个datanode hadoop001,hadoop002,hadoop003

#启动了3个journal nodesStarting journal nodes [hadoop001 hadoop002 hadoop003]

#启动了ZK Failover Controllers 在hadoop001,hadoop002Starting ZK Failover Controllers on NN hosts [hadoop001 hadoop002]

#启动了3个节点 hadoop001,hadoop002,hadoop003starting resourcemanager(nodemanager)

科普一下hadoop这几个节点的作用

Namenode

目录管理者每个集群都有一个 记录实时的数据变化如果没有它 hdfs无法工作系统中的文件将全部丢失就无法将位于不同datanode上的文件块(blocks)重建文件因此它的容错机制很有必要

负责

  • 接受用户请求

  • 维护文件系统的目录结构

  • 管理文件与block之间的联系

Datanode

文件系统的工作节点根据客户端或namenode的调度存储和检索并定期向namenode发送它们所存储的块的列表

集群中的每个服务器都运行着一个datanode后台程序这个datanode后台程序负责把数据块读写到本地的文件系统


负责

  • 存放数据
  • 文件被分割以block的形式被存储在磁盘上

Secondarynode

用来监控hdfs状态的后台辅助程序就向namenode一样 每个集群都有一个并且部署在一个单独的服务器上

不接受或记录任何实时的数据变化与namenode通信 以定期保存hdfs元数据快照

存在的意义

1、由于namenode是单点通过SecondaryNameNode的快照功能可以将namenode宕机时间和数据损失降低到最小

2、若namenode出现问题 Secondarynode可以作为备用节点

3、主要将namenode image(fsimage)和Edit log定期合并

  • fsimage
包含hadoop系统所有目录(修改时间、访问控制权限)和文件(修改时间、访问时间、块大小、组成一个文件块信息)idnode的序列化信息

  • Edit log
客户端对文件操作的记录 比如上传新文件

客户端执行写操作


周期性合并Edit log


Resourcemanager

与客户端进行交互

处理来自于客户端的请求如查询应用的运行情况等

管理各个应用的ApplicationMaster

为ApplicationMaster申请第一个Container用于启动和在它运行失败时将它重新启动

管理NodeManager

接收来自NodeManager的资源和节点健康情况汇报并向NodeManager下达管理资源命令例如kill掉某个container

资源管理和调度

最重要的职能:

接收来自ApplicationMaster的资源申请并且为其进行分配

Nodemanager

NM是ResourceManager在每台机器上的代理负责容器管理,并监控它们的资源使用情况以及向ResourceManager/Scheduler提供资源使用报告

总结


Mysql

在192.168.84.128上安装Mysql

docker pull mysql:5.7

# 创建数据,配置目录mkdir -p /docker/mysql/{data,conf.d}

# 创建配置文件

vi /docker/mysql/conf.d/my.cnf

# 添个一项配置,默认是 UTC[mysqld]

log_timestamps=SYSTEMdefault-time-zone='+8:00'

character-set-server=utf8

# 重新启动

docker run --name mysql -p 3306:3306 \-v /docker/mysql/conf.d:/etc/mysql/conf.d \-v /docker/mysql/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \--restart=always -d mysql:5.7

# 参数说明-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码--restart=always:跟随 Docker 启动

Hive启动

  • 配置Mysql用于存储hive元数据
cd /usr/local/hive/confvi hive-site.xml

  • 初次启动Hive元数据初始化

在hadoop1上初始化元数据

cd /usr/local/hadoop/sbinschematool -initSchema -dbType mysql  

若报错 Duplicate key name 'PCS_STATS_IDX'

说明已经有hive数据库了 删除即可

若报错javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify

如上面截图添加 &useSSL=false

  • 在hadoop1上启动hive
cd /usr/local/hive/binhiveserver2 &

  • 简单的使用下hive
cd /usr/local/hive/bin./hive
# 创建表事例CREATE TABLE IF NOT EXISTS test (id int,uid int,title string,name string,status int,time timestamp)COMMENT '简介'ROW FORMAT DELIMITEDFIELDS TERMINATED BY "\001"LINES TERMINATED BY "\n"STORED AS TEXTFILE;

CREATE TABLE IF NOT EXISTS test_out (name string, count int,time date)COMMENT '简介'ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\001'LINES TERMINATED BY '\n'STORED AS TEXTFILE;

# 统计后将结果数据加入另一个表INSERT INTO TABLE test_out(name,count,time) SELECT name,count(1),to_date(time) FROM test GROUP BY name,to_date(time);

INSERT OVERWRITE TABLE test_outSELECT name,count(1),to_date(time) FROM test GROUP BY name,to_date(time);


计算结果保存在了hadoop中了


后面会介绍 Mysql和Hive之间如何导入导出

启动Hbase

cd /usr/local/hbase/binstart-hbase.sh  

Sqoop启动

  • 测试sqoop功能
cd /usr/local/sqoop/bin

sqoop \list-databases \--connect jdbc:mysql://192.168.84.128:3306/?useSSL=false \--username root \--password 123456

Kafka启动

cd /usr/local/kafka/bin

kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties

测试

  • 创建主题
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
  • 分区查看
kafka-topics.sh --zookeeper localhost:2181 --describe  --topic test
  • 分区扩容
kafka-topics.sh --zookeeper localhost:2181 -alter --partitions 3 --topic test

启动Spark

在hadoop1(192.168.84.128)上启动

cd /usr/local/spark/bin

${SPARK_HOME}/sbin/start-all.sh 

启动Kylin

在hadoop1启动mr-jobhistory

cd /usr/local/kylin/bin

mr-jobhistory-daemon.sh start historyserver 

在hadoop1上启动

kylin.sh start   

http://192.168.84.128:7070/kylin初始用户名和密码为ADMIN/KYLIN

最后附上一副大数据架构图


后记

上面的内容咱们介绍了大数据的每一个组件的启动过程下篇文章咱们介绍下Mysql和Hive之间同步数据的两种方式和将整个流程串联起来看看数据是如何流转的

搭建大数据运行环境之二相关推荐

  1. 搭建大数据运行环境之一

    前言 一键搭建 zookeeper/hadoop/hive/hbase/sqoop/kafka/spark/kylin 服务器资源 本地Mac有3个虚拟机 server1 192.168.84.128 ...

  2. 使用Docker搭建大数据Hadoop环境

    使用Docker搭建大数据Hadoop环境 一.安装Docker 原文地址:https://www.imooc.com/article/48676.http://www.runoob.com/dock ...

  3. 5分钟搭建大数据学习环境

    想学大数据,先搭个环境再说,要准备多少台服务器,每台服务器的基础环境设置,各个服务器的网络互联,真是很麻烦的一件事 第一座山先把想入门的学习者挡在门外,别放弃,这里又一个即全面又快捷的搭建大数据环境的 ...

  4. 在阿里云中搭建大数据实验环境

    云计算是和自来水一样的商业模式.有了自来水,我们可以不用自己挖井,就可以快速.便捷.廉价地获得水资源.而有了云计算,我们就可以不用自己建机房.买设备.维护系统,就可以快速.便捷.廉价地获得IT资源(C ...

  5. 在家搭建大数据分布式计算环境!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:牧小熊,华中农业大学,Datawhale原创作者 0. 前言 分布 ...

  6. 大数据运行环境的运行

    1.azkaban  启动:bin/azkaban-solo-start.sh或绝对路径方式执行azkaban-solo-start.sh脚本  关闭:bin/azkaban-solo-shutdow ...

  7. 搭建大数据开发环境-Hadoop篇

    前期准备 操作系统 hadoop目前对linux操作系统支持是最好的,可以部署2000个节点的服务器集群:在hadoop2.2以后,开始支持windows操作系统,但是兼容性没有linux好.因此,建 ...

  8. mac搭建大数据开发环境

    mac安装Hadoop/hbase/spark:https://blog.csdn.net/sunxiaoju/article/details/86183405 mac idea+sbt运行spark ...

  9. Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装

    Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装 今日课程学习目标 1.掌握Linux用户.权限管理 2.掌握Linux常用系统命令 3.掌握服务器集群环境搭建 4.了解sh ...

最新文章

  1. linux基础篇-02,linux时间管理date hwclock cal 简述
  2. 《大话数据结构》读书笔记-线性表
  3. 面向对象设计原则之一:单一职责原则
  4. Java的org.apache.commons.lang3.StringUtils
  5. android 图片弹跳效果,设置点的弹跳效果
  6. 第一范式转化为第二范式_深度解读《中国智能经济发展白皮书》:AI为核心驱动力,百度给出智能范式...
  7. Sengled Snap带摄像头的智能灯泡
  8. C++的类型转换操作符
  9. [Android] 任意时刻从子线程切换到主线程的实现原理及加强版
  10. 《Nature》论文插图复刻第3期—面积图(Part2-100)
  11. 手机注册获取验证码的PHP代码
  12. 《信号完整性分析》的读书笔记和总结
  13. arcEngine开发之IMapControl接口
  14. 操作系统基础:内存管理逻辑思维导图,简单看懂内存管理的逻辑
  15. centos 使用nslookup命令问题
  16. 10个谈话技巧让你平步青云(转贴)
  17. 计算机的边界值分析法,黑盒测试:边界值分析法及测试用例设计.doc
  18. 一个续写故事达到人类水平的AI,OpenAI大规模无监督语言模型GPT-2...
  19. 内蒙古大学计算机2019年复试真题解答
  20. 几个好玩的区块链app推荐

热门文章

  1. PHP extension mcrypt must be loaded.
  2. android分析之Binder 01
  3. HTTP电脑发送短信接口调用示例
  4. 游戏开发之--开源软件1--cocos2d-x(c++)|openbor
  5. 对于公司来说,企业内训是否真的有必要?
  6. JAVA 手机号正则 工具类
  7. 别慌,不就是跨域么!
  8. vue2 关于开发插件的几点思考
  9. 自定义Sublime Text图标详细教程
  10. 6月全球Web服务器市场份额:Apache升至64.33%