(二)大数据生态圈集群搭建之

搭建流程

  • 说明

  • 下载安装包

  • 高可用完全分布式搭建

  • 一. 集群规划

  • 二. hadoop安装配置

  • 三. zookeeper安装配置

  • 四. 集群格式化

  • 五. 启动, 操作, 关闭集群

  • 六.访问NameNode的WebUI页面

  • 七.搭建Hadoop的client

说明

  搭建之前, 先根据(一)Linux环境搭建一文将集群的初始环境配置OK.

下载安装包

  Apache-Hadoop 官网: https://hadoop.apache.org/
  Apache-Hadoop各个版本下载地址: https://archive.apache.org/dist/hadoop/common/
  点击想要的版本, 选择hadoop-x.x.x.tar.gz文件下载,本文使用hadoop-2.6.5
在这里插入图片描述


  Zookeeper官网: http://zookeeper.apache.org/
  Zookeeper下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
  选择想要的版本进入下载, 本文使用zookeeper-3.4.10
在这里插入图片描述

高可用完全分布式搭建

一. 集群规划

NN(active)

NN(standby)

DN

ZK

ZKFC

JNN

node01

node02

node03

node04

二. hadoop安装配置

  1. 在node01节点上将上传的Hadoop压缩包解压

这里我将文件解压到/opt/software/hadoop文件夹下.
tar -zxf hadoop-2.6.5.tar.gz -C /opt/software/hadoop

进入配置文件修改目录
cd /opt/software/hadoop/hadoop-2.6.5/etc/hadoop/

  1. 修改hdfs-site.xml配置

vim hdfs-site.xml
  编辑文件, 在configuration标签对中插入:

1<property> 2 <name>dfs.nameservices</name> 3 <value>mycluster</value> 4</property> 5<!-- 配置集群服务名 --> 6<property> 7 <name>dfs.ha.namenodes.mycluster</name> 8 <value>nn1,nn2</value> 9</property> 10<property> 11 <name>dfs.namenode.rpc-address.mycluster.nn1</name> 12 <value>node01:8020</value> 13</property> 14<property> 15 <name>dfs.namenode.rpc-address.mycluster.nn2</name> 16 <value>node02:8020</value> 17</property> 18<!-- 配置集群两个namenode节点的本地位置 --> 19<property> 20 <name>dfs.namenode.http-address.mycluster.nn1</name> 21 <value>node01:50070</value> 22</property> 23<property> 24 <name>dfs.namenode.http-address.mycluster.nn2</name> 25 <value>node02:50070</value> 26</property> 27<!-- 配置集群两个namenode节点的网络位置 --> 28<property> 29 <name>dfs.namenode.shared.edits.dir</name> 30 <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value> 31</property> 32<!-- 配置集群三个journalnode节点的位置 --> 33<property> 34 <name>dfs.journalnode.edits.dir</name> 35 <value>/var/sxt/hadoop/ha/jn</value> 36</property> 37<!-- 配置JNN生成文件存放地址 --> 38<property> 39 <name>dfs.client.failover.proxy.provider.mycluster</name> 40 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 41</property> 42<!-- 配置ZKFC代理 --> 43<property> 44 <name>dfs.ha.fencing.methods</name> 45 <value>sshfence</value> 46</property> 47<!-- 配置zookeeper进程对非本节点操作时的连接方式 --> 48<property> 49 <name>dfs.ha.fencing.ssh.private-key-files</name> 50 <value>/root/.ssh/id_rsa</value> 51</property> 52<!-- 配置上述ssh连接密钥所在位置 --> 53<property> 54 <name>dfs.ha.automatic-failover.enabled</name> 55 <value>true</value> 56 </property> 57<!-- 配置开启失败容错监控 -->
  1. 修改core-site.xml配置

vim core-site.xml
  编辑文件, 在configuration标签对中插入

1<property> 2 <name>fs.defaultFS</name> 3 <value>hdfs://mycluster</value> 4</property> 5<property> 6 <name>ha.zookeeper.quorum</name> 7 <value>node02:2181,node03:2181,node04:2181</value> 8</property>

  其中fs.defaultFS配置的是hdfs文件目录的前缀, 此处的mycluster为hdfs-site.xml中配置的集群服务名.

  ha.zookeeper.quorum配置的是集群协调服务进程zookeeper.

  1. 修改slaves配置文件

    vim slaves 删除localhost(如果有) 编辑slaves, 在文件中写入: node02 node03 node04

  slaves中配置的是从节点(DataNode)主机名(hostname), 高可用完全分布式, 我们设计的是三个DN节点.

  在编辑文件时, 要注意纵向写的格式, 主机名后也不可以带空格, 否则可能会导致主机解析失败.

  1. 安装包分发

  根据上述步骤配置好之后, 需要将配置好的文件发到其他三个节点上.

1cd /opt/software/hadoop 将hadoop下的hadoop-2.6.5包发送 2 3scp -r hadoop-2.6.5 root@node02:/opt/software/hadoop/ 4scp -r hadoop-2.6.5 root@node03:/opt/software/hadoop/ 5scp -r hadoop-2.6.5 root@node04:/opt/software/hadoop/ 6 7或使用一种更简单的指令 8scp -r hadoop-2.6.5 node02:`pwd` 9scp -r hadoop-2.6.5 node03:`pwd` 10scp -r hadoop-2.6.5 node04:`pwd`

  发送时, 如果其他节点上没有/opt/software/hadoop/目录, 那么需要自己建立之后再发送. 发送完毕之后要保证所有节点的hadoop目录所在路径都是一致的.

  1. 修改hadoop-evn.sh文件

  此步可先跳过, 该文件可以不修改. 当启动hdfs出现" JAVA_HOME cannot find or set" 类似的说明java_home没有配置的提示时, 可再手动配置(前提是执行java -version成功在显示器打印java版本).

1vim hadoop-evn.sh 2 3编辑文件, 找到export JAVA_HOME=${JAVA_HOME}那一行 4 5= 后的内容改为JAVA_HOME的确切路径, 可使用 echo $JAVA_HOME查看 6export JAVA_HOME=/usr/local/jdk1.8.0_181

  修改完成之后还要使用scp命令将修改的文件发送到各个节点上:

1scp hadoop-evn.sh node02:`pwd` 2scp hadoop-evn.sh node03:`pwd` 3scp hadoop-evn.sh node04:`pwd`
  1. 将hadoop配置到用户环境变量中

  此处配置好后, 可以在任意位置使用hdfs的命令.

1vim ~/.bashrc 2在文件最后插入 3export PATH=$PATH:/opt/software/hadoop/hadoop-2.6.5/bin:/opt/software/hadoop/hadoop-2.6.5/sbin

三. zookeeper安装配置

  1. 搭建zookeeper集群

  zookeeper节点规划在node02, node03 ,node04 节点上

1首先, 在 node02 上解压zookeeper的压缩包 2tar -zxf zookeeper-3.4.10.tar.gz -C /opt/software/zookeeper 3 4进入解压文件, 修改conf目录下的zoo_sample.cfg 5cd /opt/software/zookeeper/zookeeper-3.4.10/conf 6mv zoo_sample.cfg zoo.cfg 重命名

  修改zoo.cfg文件

1vim zoo.cfg 2 3修改dataDir的值 4dataDir=/var/qb/zookeeper 设置zookeeper目录, 路径任意, 需自己创建 5 6在文件最后加入zookeeper节点的服务位置 7server.1=node02:2888:3888 8server.2=node03:2888:3888 9server.3=node04:2888:3888

  发送安装包, 将zookeeper安装包发送到node03, node04节点上

1cd /opt/software/zookeeper 2 3scp -r zookeeper-3.4.10 node03:`pwd` 4scp -r zookeeper-3.4.10 node04:`pwd`

  在各个zookeeper节点设置的dataDir目录下创建myid文件, 修改文件内容

1vim /var/qb/zookeeper/myid 在各个节点的myid中写入相应ID21 对应node02节点 32 对应node03节点 43 对应node04节点

  最后, 启动zookeeper进程

1cd /opt/software/zookeeper/zookeeper-3.4.10/bin 2 3./zkServer.sh start

四. 集群格式化

  1. 格式化NameNode

  在node01, node02, node03 上分别执行启动journalnode的命令.

hadoop-daemon.sh start journalnode

  随便选一台NameNode(node01 || node02)作为active节点进行格式化.

1hdfs namenode -format 2hadoop-daemon.sh start namenode

  另一台NameNode节点执行

hdfs namenode  -bootstrapStandby

  格式化ZKFC进程

hdfs zkfc -formatZK

五. 启动, 操作, 关闭集群

  1. 启动HDFS

  关闭所有节点上的进程

stop-dfs.sh

  启动HDFS

start-dfs.sh
  1. 查看启动进程

    jps

  2. 操作HDFS文件系统

    创建目录 hdfs dfs -mkdir -p /abc/cba 上传文件 hdfs dfs -D dfs.blocksize=1048576 -put text.txt ...

  3. 关闭HDFS

    stop-dfs.sh 或 killall java

注:下次启动时, 要先启动zookeeper进程, 再启动hdfs

六.访问NameNode的WebUI页面

  启动Ha集群之后, 在本地机打开一个浏览器, 在地址栏输入active 状态的namenode节点的ip地址+端口, 例如_192.168.75.133:50070_ , 也可在本地机中修改host文件, 配置域名node01, 就可以使用_node01:50070_ 来访问webUI的页面. 如图:
在这里插入图片描述

  查看集群的状态:
在这里插入图片描述

  点击Live Nodes查看各个DataNode节点的详细信息:
在这里插入图片描述

  此处, 可通过web页面查看HDFS的文件目录结构以及文件的部分元数据信息.输入框中需要输入HDFS文件路径.
在这里插入图片描述

如果是一个文件, 点击可以显示该文件存在哪个block, ,blockId是多少, 以及各个备份所在的节点:
在这里插入图片描述

七.搭建Hadoop的client

  客户端搭建十分简单, 只需将配置好的Hadoop安装包发送到client节点对应目录的位置上即可.

  搭建好client之后, 启动集群, 就可以在client上操作HDFS或者提交MapReduce应用程序, 在client上的操作我们称之为集群外操作.

  在集群内一台节点上操作称为集群内操作, 不建议使用集群内操作, 因为如果每一次操作都选择同一个节点, 就会导致该节点的磁盘以及网络IO负载超过其他节点, 久而久之这个节点的磁盘以及网卡性能将会下降, 最终导致数据倾斜问题. 数据倾斜是大数据开发中应当尽量避免的问题.

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )