更换图片源
This commit is contained in:
@ -37,7 +37,7 @@ Azkaban 3.70.0 编译需要依赖 `gradle-4.6-all.zip`。Gradle 是一个项目
|
||||
|
||||
需要注意的是不同版本的 Azkaban 依赖 Gradle 版本不同,可以在解压后的 `/gradle/wrapper/gradle-wrapper.properties` 文件查看
|
||||
|
||||
<div align="center"> <img src="../../pictures/azkaban-gradle-wrapper.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/azkaban-gradle-wrapper.png"/> </div>
|
||||
|
||||
在编译时程序会自动去图中所示的地址进行下载,但是下载速度很慢。为避免影响编译过程,建议先手动下载至 `/gradle/wrapper/` 目录下:
|
||||
|
||||
@ -47,7 +47,7 @@ Azkaban 3.70.0 编译需要依赖 `gradle-4.6-all.zip`。Gradle 是一个项目
|
||||
|
||||
然后修改配置文件 `gradle-wrapper.properties` 中的 `distributionUrl` 属性,指明使用本地的 gradle。
|
||||
|
||||
<div align="center"> <img src="../../pictures/azkaban-gradle-wrapper-2.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/azkaban-gradle-wrapper-2.png"/> </div>
|
||||
|
||||
#### 3. Git
|
||||
|
||||
@ -100,7 +100,7 @@ tar -zxvf azkaban-solo-server-3.70.0.tar.gz
|
||||
|
||||
这一步不是必须的。但是因为 Azkaban 默认采用的时区是 `America/Los_Angeles`,如果你的调度任务中有定时任务的话,就需要进行相应的更改,这里我更改为常用的 `Asia/Shanghai`
|
||||
|
||||
<div align="center"> <img src="../../pictures/azkaban-setting.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/azkaban-setting.png"/> </div>
|
||||
|
||||
### 2.3 启动
|
||||
|
||||
@ -114,11 +114,11 @@ tar -zxvf azkaban-solo-server-3.70.0.tar.gz
|
||||
|
||||
验证方式一:使用 `jps` 命令查看是否有 `AzkabanSingleServer` 进程:
|
||||
|
||||
<div align="center"> <img src="../../pictures/akaban-jps.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/akaban-jps.png"/> </div>
|
||||
<br/>
|
||||
|
||||
验证方式二:访问 8081 端口,查看 Web UI 界面,默认的登录名密码都是 `azkaban`,如果需要修改或新增用户,可以在 `conf/azkaban-users.xml ` 文件中进行配置:
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/azkaban-web-ui.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/azkaban-web-ui.png"/> </div>
|
||||
|
||||
|
||||
|
@ -49,7 +49,7 @@ bin/start-cluster.sh
|
||||
|
||||
Flink 提供了 WEB 界面用于直观的管理 Flink 集群,访问端口为 `8081`:
|
||||
|
||||
<div align="center"> <img src="../../pictures/flink-dashboard.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/flink-dashboard.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -83,13 +83,13 @@ a a b b c c c a e
|
||||
|
||||
可以通过 WEB UI 的控制台查看作业统运行情况:
|
||||
|
||||
<div align="center"> <img src="../../pictures/flink-socket-wordcount.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/flink-socket-wordcount.png"/> </div>
|
||||
|
||||
|
||||
|
||||
也可以通过 WEB 控制台查看到统计结果:
|
||||
|
||||
<div align="center"> <img src="../../pictures/flink-socket-wordcount-stdout.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/flink-socket-wordcount-stdout.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -160,7 +160,7 @@ bin/start-cluster.sh
|
||||
|
||||
此时控制台输出如下:
|
||||
|
||||
<div align="center"> <img src="../../pictures/flink-start-cluster-shell.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/flink-start-cluster-shell.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -223,13 +223,13 @@ bin/start-cluster.sh
|
||||
|
||||
此时输出如下:
|
||||
|
||||
<div align="center"> <img src="../../pictures/flink-standalone-cluster-ha.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/flink-standalone-cluster-ha.png"/> </div>
|
||||
|
||||
|
||||
|
||||
可以看到集群已经以 HA 的模式启动,此时还需要在各个节点上使用 `jps` 命令来查看进程是否启动成功,正常情况如下:
|
||||
|
||||
<div align="center"> <img src="../../pictures/flink-standalone-cluster-jps.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/flink-standalone-cluster-jps.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -255,7 +255,7 @@ the classpath/dependencies.
|
||||
|
||||
可以看到是因为在 classpath 目录下找不到 Hadoop 的相关依赖,此时需要检查是否在环境变量中配置了 Hadoop 的安装路径,如果路径已经配置但仍然存在上面的问题,可以从 [Flink 官网](https://flink.apache.org/downloads.html)下载对应版本的 Hadoop 组件包:
|
||||
|
||||
<div align="center"> <img src="../../pictures/flink-optional-components.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/flink-optional-components.png"/> </div>
|
||||
|
||||
|
||||
|
||||
|
@ -106,7 +106,7 @@ export JAVA_HOME=/usr/java/jdk1.8.0_201
|
||||
|
||||
验证方式二 :访问 HBaseWeb UI 页面,默认端口为 `16010` 。
|
||||
|
||||
<div align="center"> <img src="../../pictures/hbase-web-ui.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hbase-web-ui.png"/> </div>
|
||||
|
||||
|
||||
## 三、伪集群模式安装(Pseudo-Distributed)
|
||||
@ -224,4 +224,4 @@ hadoop001
|
||||
|
||||
验证方式二 :访问 HBase Web UI 界面,需要注意的是 1.2 版本的 HBase 的访问端口为 `60010`
|
||||
|
||||
<div align="center"> <img src="../../pictures/hbase-60010.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hbase-60010.png"/> </div>
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
这里搭建一个 3 节点的 HBase 集群,其中三台主机上均为 `Regin Server`。同时为了保证高可用,除了在 hadoop001 上部署主 `Master` 服务外,还在 hadoop002 上部署备用的 `Master` 服务。Master 服务由 Zookeeper 集群进行协调管理,如果主 `Master` 不可用,则备用 `Master` 会成为新的主 `Master`。
|
||||
|
||||
<div align="center"> <img src="../../pictures/hbase集群规划.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hbase集群规划.png"/> </div>
|
||||
|
||||
## 二、前置条件
|
||||
|
||||
@ -190,11 +190,11 @@ start-hbase.sh
|
||||
|
||||
访问 HBase 的 Web-UI 界面,这里我安装的 HBase 版本为 1.2,访问端口为 `60010`,如果你安装的是 2.0 以上的版本,则访问端口号为 `16010`。可以看到 `Master` 在 hadoop001 上,三个 `Regin Servers` 分别在 hadoop001,hadoop002,和 hadoop003 上,并且还有一个 `Backup Matser` 服务在 hadoop002 上。
|
||||
|
||||
<div align="center"> <img src="../../pictures/hbase-集群搭建1.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hbase-集群搭建1.png"/> </div>
|
||||
<br/>
|
||||
|
||||
hadoop002 上的 HBase 出于备用状态:
|
||||
|
||||
<br/>
|
||||
|
||||
<div align="center"> <img src="../../pictures/hbase-集群搭建2.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hbase-集群搭建2.png"/> </div>
|
||||
|
@ -195,7 +195,7 @@ sudo systemctl stop firewalld.service
|
||||
|
||||
方式二:查看 Web UI 界面,端口为 `50070`:
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/hadoop安装验证.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop安装验证.png"/> </div>
|
||||
|
||||
|
||||
## 四、Hadoop(YARN)环境搭建
|
||||
@ -259,4 +259,4 @@ cp mapred-site.xml.template mapred-site.xml
|
||||
|
||||
方式二:查看 Web UI 界面,端口号为 `8088`:
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/hadoop-yarn安装验证.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop-yarn安装验证.png"/> </div>
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
这里搭建一个 3 节点的 Hadoop 集群,其中三台主机均部署 `DataNode` 和 `NodeManager` 服务,但只有 hadoop001 上部署 `NameNode` 和 `ResourceManager` 服务。
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop集群规划.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop集群规划.png"/> </div>
|
||||
|
||||
## 二、前置条件
|
||||
|
||||
@ -210,17 +210,17 @@ start-yarn.sh
|
||||
|
||||
在每台服务器上使用 `jps` 命令查看服务进程,或直接进入 Web-UI 界面进行查看,端口为 `50070`。可以看到此时有三个可用的 `Datanode`:
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop-集群环境搭建.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop-集群环境搭建.png"/> </div>
|
||||
<BR/>
|
||||
|
||||
点击 `Live Nodes` 进入,可以看到每个 `DataNode` 的详细情况:
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop-集群搭建2.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop-集群搭建2.png"/> </div>
|
||||
<BR/>
|
||||
|
||||
接着可以查看 Yarn 的情况,端口号为 `8088` :
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop-集群搭建3.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop-集群搭建3.png"/> </div>
|
||||
|
||||
|
||||
## 五、提交服务到集群
|
||||
|
@ -98,7 +98,7 @@ HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2
|
||||
|
||||
将 MySQL 驱动包拷贝到 Hive 安装目录的 `lib` 目录下, MySQL 驱动的下载地址为:https://dev.mysql.com/downloads/connector/j/ , 在本仓库的[resources](https://github.com/heibaiying/BigData-Notes/tree/master/resources) 目录下我也上传了一份,有需要的可以自行下载。
|
||||
|
||||
<div align="center"> <img src="../../pictures/hive-mysql.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hive-mysql.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -123,11 +123,11 @@ HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2
|
||||
# hive
|
||||
```
|
||||
|
||||
<div align="center"> <img src="../../pictures/hive-install-2.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hive-install-2.png"/> </div>
|
||||
|
||||
在 Mysql 中也能看到 Hive 创建的库和存放元数据信息的表
|
||||
|
||||
<div align="center"> <img src="../../pictures/hive-mysql-tables.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hive-mysql-tables.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -178,4 +178,4 @@ Hive 内置了 HiveServer 和 HiveServer2 服务,两者都允许客户端使
|
||||
# beeline -u jdbc:hive2://hadoop001:10000 -n root
|
||||
```
|
||||
|
||||
<div align="center"> <img src="../../pictures/hive-beeline-cli.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hive-beeline-cli.png"/> </div>
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
官方下载地址:http://spark.apache.org/downloads.html ,选择 Spark 版本和对应的 Hadoop 版本后再下载:
|
||||
|
||||
<div align="center"> <img width="600px" src="../../pictures/spark-download.png"/> </div>
|
||||
<div align="center"> <img width="600px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-download.png"/> </div>
|
||||
|
||||
解压安装包:
|
||||
|
||||
@ -54,7 +54,7 @@ spark-shell --master local[2]
|
||||
- **local[k]**:启动 k 个工作线程;
|
||||
- **local[*]**:启动跟 cpu 数目相同的工作线程数。
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-shell-local.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-shell-local.png"/> </div>
|
||||
|
||||
<br/>
|
||||
|
||||
@ -86,11 +86,11 @@ wordCounts.collect
|
||||
|
||||
执行过程如下,可以看到已经输出了词频统计的结果:
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-shell.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-shell.png"/> </div>
|
||||
|
||||
同时还可以通过 Web UI 查看作业的执行情况,访问端口为 `4040`:
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-shell-web-ui.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-shell-web-ui.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ Scala 的运行依赖于 JDK,所以需要你本机有安装对应版本的 JDK
|
||||
|
||||
IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。打开 IDEA,依次点击 **File** => **settings**=> **plugins** 选项卡,搜索 Scala 插件 (如下图)。找到插件后进行安装,并重启 IDEA 使得安装生效。
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/idea-scala-plugin.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/idea-scala-plugin.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -116,7 +116,7 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。
|
||||
|
||||
在 IDEA 中依次点击 **File** => **New** => **Project** 选项卡,然后选择创建 `Scala—IDEA` 工程:
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/idea-newproject-scala.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/idea-newproject-scala.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -126,7 +126,7 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。
|
||||
|
||||
此时看到 `Scala SDK` 为空,依次点击 `Create` => `Download` ,选择所需的版本后,点击 `OK` 按钮进行下载,下载完成点击 `Finish` 进入工程。
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/idea-scala-select.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/idea-scala-select.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -136,13 +136,13 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。
|
||||
|
||||
这里我的系统是 Windows,下载 msi 版本的安装包后,一直点击下一步进行安装,安装完成后会自动配置好环境变量。
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/scala-other-resources.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/scala-other-resources.png"/> </div>
|
||||
|
||||
|
||||
|
||||
由于安装时已经自动配置好环境变量,所以 IDEA 会自动选择对应版本的 SDK。
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/idea-scala-2.1.8.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/idea-scala-2.1.8.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -150,7 +150,7 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。
|
||||
|
||||
在工程 `src` 目录上右击 **New** => **Scala class** 创建 `Hello.scala`。输入代码如下,完成后点击运行按钮,成功运行则代表搭建成功。
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/scala-hello-world.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/scala-hello-world.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -160,7 +160,7 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。
|
||||
|
||||
在日常的开发中,由于对应软件(如 Spark)的版本切换,可能导致需要切换 Scala 的版本,则可以在 `Project Structures` 中的 `Global Libraries` 选项卡中进行切换。
|
||||
|
||||
<div align="center"> <img width="700px" src="../../pictures/idea-scala-change.png"/> </div>
|
||||
<div align="center"> <img width="700px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/idea-scala-change.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -170,7 +170,7 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。
|
||||
|
||||
在 IDEA 中有时候重新打开项目后,右击并不会出现新建 `scala` 文件的选项,或者在编写时没有 Scala 语法提示,此时可以先删除 `Global Libraries` 中配置好的 SDK,之后再重新添加:
|
||||
|
||||
<div align="center"> <img src="../../pictures/scala-sdk.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/scala-sdk.png"/> </div>
|
||||
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
这里搭建一个 3 节点的 Spark 集群,其中三台主机上均部署 `Worker` 服务。同时为了保证高可用,除了在 hadoop001 上部署主 `Master` 服务外,还在 hadoop002 和 hadoop003 上分别部署备用的 `Master` 服务,Master 服务由 Zookeeper 集群进行协调管理,如果主 `Master` 不可用,则备用 `Master` 会成为新的主 `Master`。
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark集群规划.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark集群规划.png"/> </div>
|
||||
|
||||
## 二、前置条件
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
|
||||
下载所需版本的 Spark,官网下载地址:http://spark.apache.org/downloads.html
|
||||
|
||||
<div align="center"> <img width="600px" src="../../pictures/spark-download.png"/> </div>
|
||||
<div align="center"> <img width="600px" src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-download.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -151,13 +151,13 @@ start-master.sh
|
||||
|
||||
查看 Spark 的 Web-UI 页面,端口为 `8080`。此时可以看到 hadoop001 上的 Master 节点处于 `ALIVE` 状态,并有 3 个可用的 `Worker` 节点。
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-集群搭建1.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-集群搭建1.png"/> </div>
|
||||
|
||||
而 hadoop002 和 hadoop003 上的 Master 节点均处于 `STANDBY` 状态,没有可用的 `Worker` 节点。
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-集群搭建2.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-集群搭建2.png"/> </div>
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-集群搭建3.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-集群搭建3.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -165,11 +165,11 @@ start-master.sh
|
||||
|
||||
此时可以使用 `kill` 命令杀死 hadoop001 上的 `Master` 进程,此时备用 `Master` 会中会有一个再次成为 ` 主 Master`,我这里是 hadoop002,可以看到 hadoop2 上的 `Master` 经过 `RECOVERING` 后成为了新的主 `Master`,并且获得了全部可以用的 `Workers`。
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-集群搭建4.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-集群搭建4.png"/> </div>
|
||||
|
||||
Hadoop002 上的 `Master` 成为主 `Master`,并获得了全部可以用的 `Workers`。
|
||||
|
||||
<div align="center"> <img src="../../pictures/spark-集群搭建5.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/spark-集群搭建5.png"/> </div>
|
||||
|
||||
此时如果你再在 hadoop001 上使用 `start-master.sh` 启动 Master 服务,那么其会作为备用 `Master` 存在。
|
||||
|
||||
|
@ -78,4 +78,4 @@ nohup sh storm logviewer &
|
||||
|
||||
验证方式二: 访问 8080 端口,查看 Web-UI 界面:
|
||||
|
||||
<div align="center"> <img src="../../pictures/storm-web-ui.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-web-ui.png"/> </div>
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
这里搭建一个 3 节点的 Storm 集群:三台主机上均部署 `Supervisor` 和 `LogViewer` 服务。同时为了保证高可用,除了在 hadoop001 上部署主 `Nimbus` 服务外,还在 hadoop002 上部署备用的 `Nimbus` 服务。`Nimbus` 服务由 Zookeeper 集群进行协调管理,如果主 `Nimbus` 不可用,则备用 `Nimbus` 会成为新的主 `Nimbus`。
|
||||
|
||||
<div align="center"> <img src="../../pictures/storm-集群规划.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-集群规划.png"/> </div>
|
||||
|
||||
## 二、前置条件
|
||||
|
||||
@ -150,18 +150,18 @@ nohup sh storm logviewer &
|
||||
|
||||
使用 `jps` 查看进程,三台服务器的进程应该分别如下:
|
||||
|
||||
<div align="center"> <img src="../../pictures/storm-集群-shell.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-集群-shell.png"/> </div>
|
||||
|
||||
|
||||
<br/>
|
||||
|
||||
访问 hadoop001 或 hadoop002 的 `8080` 端口,界面如下。可以看到有一主一备 2 个 `Nimbus` 和 3 个 `Supervisor`,并且每个 `Supervisor` 有四个 `slots`,即四个可用的 `worker` 进程,此时代表集群已经搭建成功。
|
||||
|
||||
<div align="center"> <img src="../../pictures/storm-集群搭建1.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm-集群搭建1.png"/> </div>
|
||||
|
||||
|
||||
## 五、高可用验证
|
||||
|
||||
这里手动模拟主 `Nimbus` 异常的情况,在 hadoop001 上使用 `kill` 命令杀死 `Nimbus` 的线程,此时可以看到 hadoop001 上的 `Nimbus` 已经处于 `offline` 状态,而 hadoop002 上的 `Nimbus` 则成为新的 `Leader`。
|
||||
|
||||
<div align="center"> <img src="../../pictures/storm集群搭建2.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/storm集群搭建2.png"/> </div>
|
||||
|
@ -180,8 +180,8 @@ echo "3" > /usr/local/zookeeper-cluster/data/myid
|
||||
|
||||
启动后使用 `zkServer.sh status` 查看集群各个节点状态。如图所示:三个节点进程均启动成功,并且 hadoop002 为 leader 节点,hadoop001 和 hadoop003 为 follower 节点。
|
||||
|
||||
<div align="center"> <img src="../../pictures/zookeeper-hadoop001.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/zookeeper-hadoop001.png"/> </div>
|
||||
|
||||
<div align="center"> <img src="../../pictures/zookeeper-hadoop002.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/zookeeper-hadoop002.png"/> </div>
|
||||
|
||||
<div align="center"> <img src="../../pictures/zookeeper-hadoop003.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/zookeeper-hadoop003.png"/> </div>
|
||||
|
@ -20,7 +20,7 @@ Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,
|
||||
|
||||
HDFS 高可用架构如下:
|
||||
|
||||
<div align="center"> <img src="../../pictures/HDFS-HA-Architecture-Edureka.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/HDFS-HA-Architecture-Edureka.png"/> </div>
|
||||
|
||||
> *图片引用自:https://www.edureka.co/blog/how-to-set-up-hadoop-cluster-with-hdfs-high-availability/*
|
||||
|
||||
@ -42,13 +42,13 @@ HDFS 高可用架构主要由以下组件所构成:
|
||||
|
||||
需要说明的是向 JournalNode 集群写入 EditLog 是遵循 “过半写入则成功” 的策略,所以你至少要有 3 个 JournalNode 节点,当然你也可以继续增加节点数量,但是应该保证节点总数是奇数。同时如果有 2N+1 台 JournalNode,那么根据过半写的原则,最多可以容忍有 N 台 JournalNode 节点挂掉。
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop-QJM-同步机制.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop-QJM-同步机制.png"/> </div>
|
||||
|
||||
### 1.3 NameNode 主备切换
|
||||
|
||||
NameNode 实现主备切换的流程下图所示:
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop-namenode主备切换.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop-namenode主备切换.png"/> </div>
|
||||
1. HealthMonitor 初始化完成之后会启动内部的线程来定时调用对应 NameNode 的 HAServiceProtocol RPC 接口的方法,对 NameNode 的健康状态进行检测。
|
||||
2. HealthMonitor 如果检测到 NameNode 的健康状态发生变化,会回调 ZKFailoverController 注册的相应方法进行处理。
|
||||
3. 如果 ZKFailoverController 判断需要进行主备切换,会首先使用 ActiveStandbyElector 来进行自动的主备选举。
|
||||
@ -63,14 +63,14 @@ YARN ResourceManager 的高可用与 HDFS NameNode 的高可用类似,但是 R
|
||||
|
||||
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop-rm-ha-overview.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop-rm-ha-overview.png"/> </div>
|
||||
|
||||
|
||||
## 二、集群规划
|
||||
|
||||
按照高可用的设计目标:需要保证至少有两个 NameNode (一主一备) 和 两个 ResourceManager (一主一备) ,同时为满足“过半写入则成功”的原则,需要至少要有 3 个 JournalNode 节点。这里使用三台主机进行搭建,集群规划如下:
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop高可用集群规划.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop高可用集群规划.png"/> </div>
|
||||
|
||||
|
||||
## 三、前置条件
|
||||
@ -448,33 +448,33 @@ HDFS 和 YARN 的端口号分别为 `50070` 和 `8080`,界面应该如下:
|
||||
|
||||
此时 hadoop001 上的 `NameNode` 处于可用状态:
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop高可用集群1.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop高可用集群1.png"/> </div>
|
||||
而 hadoop002 上的 `NameNode` 则处于备用状态:
|
||||
|
||||
<br/>
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop高可用集群3.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop高可用集群3.png"/> </div>
|
||||
<br/>
|
||||
|
||||
hadoop002 上的 `ResourceManager` 处于可用状态:
|
||||
|
||||
<br/>
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop高可用集群4.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop高可用集群4.png"/> </div>
|
||||
<br/>
|
||||
|
||||
hadoop003 上的 `ResourceManager` 则处于备用状态:
|
||||
|
||||
<br/>
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop高可用集群5.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop高可用集群5.png"/> </div>
|
||||
<br/>
|
||||
|
||||
同时界面上也有 `Journal Manager` 的相关信息:
|
||||
|
||||
<br/>
|
||||
|
||||
<div align="center"> <img src="../../pictures/hadoop高可用集群2.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/hadoop高可用集群2.png"/> </div>
|
||||
## 七、集群的二次启动
|
||||
|
||||
上面的集群初次启动涉及到一些必要初始化操作,所以过程略显繁琐。但是集群一旦搭建好后,想要再次启用它是比较方便的,步骤如下(首选需要确保 ZooKeeper 集群已经启动):
|
||||
|
@ -137,7 +137,7 @@ echo "3" > /usr/local/zookeeper-cluster/data/03/myid
|
||||
|
||||
使用 jps 查看进程,并且使用 `zkServer.sh status` 查看集群各个节点状态。如图三个节点进程均启动成功,并且两个节点为 follower 节点,一个节点为 leader 节点。
|
||||
|
||||
<div align="center"> <img src="../../pictures/zookeeper-cluster.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/zookeeper-cluster.png"/> </div>
|
||||
|
||||
|
||||
|
||||
@ -229,7 +229,7 @@ bin/kafka-topics.sh --create --bootstrap-server hadoop001:9092 \
|
||||
bin/kafka-topics.sh --describe --bootstrap-server hadoop001:9092 --topic my-replicated-topic
|
||||
```
|
||||
|
||||
<div align="center"> <img src="../../pictures/kafka-cluster-shell.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/kafka-cluster-shell.png"/> </div>
|
||||
|
||||
|
||||
|
||||
|
@ -38,7 +38,7 @@ ONBOOT=yes
|
||||
|
||||
我的主机配置:
|
||||
|
||||
<div align="center"> <img src="../../pictures/ipconfig.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/ipconfig.png"/> </div>
|
||||
|
||||
修改后完整配置如下:
|
||||
|
||||
@ -81,13 +81,13 @@ ONBOOT=yes
|
||||
|
||||
这里我是用的虚拟机是 virtualBox,开启多网卡配置方式如下:
|
||||
|
||||
<div align="center"> <img src="../../pictures/virtualbox-multi-network.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/virtualbox-multi-network.png"/> </div>
|
||||
|
||||
### 2. 查看网卡名称
|
||||
|
||||
使用 `ifconfig`,查看第二块网卡名称,这里我的名称为 `enp0s8`:
|
||||
|
||||
<div align="center"> <img src="../../pictures/mutli-net-ip.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/mutli-net-ip.png"/> </div>
|
||||
|
||||
### 3. 配置第二块网卡
|
||||
|
||||
@ -115,4 +115,4 @@ DEVICE=enp0s8
|
||||
|
||||
使用时只需要根据所处的网络环境,勾选对应的网卡即可,不使用的网卡尽量不要勾选启动。
|
||||
|
||||
<div align="center"> <img src="../../pictures/virtualbox启用网络.png"/> </div>
|
||||
<div align="center"> <img src="https://gitee.com/heibaiying/BigData-Notes/raw/master/pictures/virtualbox启用网络.png"/> </div>
|
||||
|
Reference in New Issue
Block a user