Zookeeper集群搭建

1. Zookeeper集群搭建

首先将三台虚拟机切换到相互免秘钥快照(

keyfree)

上传 Zookeeper,解压,拷贝

[root@node01 ~]# tar -zxvf zookeeper-3.4.5.tar.gz -C /opt/yjx/

修改配置文件

[root@node01 ~]# cd /opt/yjx/zookeeper-3.4.5/conf/
[root@node01 conf]# cp zoo_sample.cfg zoo.cfg
[root@node01 conf]# vim zoo.cfg
# #总共有三处需要注意 1数据存放路径 2客户端访问端口 3服务器集群节点
# the directory where the snapshot is stored.
dataDir=/var/yjx/zookeeper
# the port at which the clients will connect
clientPort=2181
# 设置服务器内部通信的地址和zk集群的节点
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

修改日志路径(选做)

$ZOOKEEPER_HOME/bin/zkEnv.sh

[root@node01 conf]# vim /opt/yjx/zookeeper-3.4.5/bin/zkEnv.sh
56     ZOO_LOG_DIR="/opt/yjx/zookeeper-3.4.5/logs"
61     ZOO_LOG4J_PROP="INFO,CONSOLE,ROLLINGFILE"

$ZOOKEEPER_HOME/conf/log4j.properties

[root@node01 conf]# vim /opt/yjx/zookeeper-3.4.5/conf/log4j.properties
2 zookeeper.root.logger=INFO,CONSOLE,ROLLINGLIFE
4 zookeeper.log.dir=/opt/yjx/zookeeper-3.4.5/logs

拷贝Zookeeper

[root@node02 yjx]scp -r root@node01:/opt/yjx/zookeeper-3.4.5 /opt/yjx/
[root@node03 yjx]scp -r root@node01:/opt/yjx/zookeeper-3.4.5 /opt/yjx/

创建myid(123分别指node01,node02,node03)

[123]mkdir -p /var/yjx/zookeeper
[123]touch /var/yjx/zookeeper/myid
[1] echo 1 > /var/yjx/zookeeper/myid
[2] echo 2 > /var/yjx/zookeeper/myid
[3] echo 3 > /var/yjx/zookeeper/myid

设置环境变量

[123] vim /etc/profile

export ZOOKEEPER_HOME=/opt/yjx/zookeeper-3.4.5

export PATH=$ZOOKEEPER_HOME/bin:$PATH

开启集群

[123] zkServer.sh start
[123] zkServer.sh status
[123] zkServer.sh stop

关机拍摄快照

shutdown -h now
2. zookeeper存储结构

zookeeper是一个树状结构,维护一个小型的数据节点znode

数据以keyvalue的方式存在,目录是数据的key

所有的数据访问都必须以绝对路径的方式呈现

3.Zookeeper****常见命令
一、zk服务命令
1. 启动ZK服务: bin/zkServer.sh start
2. 查看ZK服务状态: bin/zkServer.sh status
3. 停止ZK服务: bin/zkServer.sh stop
4. 重启ZK服务: bin/zkServer.sh restart
5. 连接服务器: zkCli.sh -server 127.0.0.1:2181
二、连接zk
Linux环境下:
eg、zkCli.sh -server 127.0.0.1:2181
三、zk客户端命令
1.ls -- 查看某个目录包含的所有文件,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
 ls /path
2.ls2 -- 查看某个目录包含的所有文件,与ls不同的是它查看到time、version等信息,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] ls2 /
3.create -- 创建znode,并设置初始内容,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] create /test "test"
Created /test
创建一个新的 znode节点“ test ”以及与它关联的字符串
   create /path data   默认创建持久节点
   create -s /path data 创建顺序节点
   create -e /path data 创建临时节点
   create /parent/sub/path /data
4.get -- 获取znode的数据,如下:
[zk: 127.0.0.1:2181(CONNECTED) 1] get /test
 get /path
 get /path0000000018 访问顺序节点必须输入完整路径
5.set -- 修改znode内容,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] set /test "ricky"
 set /path /data
 6.delete -- 删除znode,例如:
[zk: 127.0.0.1:2181(CONNECTED) 1] delete /test
 delete /path 删除没有子节点的节点
 rmr /path 移除节点并且递归移除所有子节点
7.quit -- 退出客户端
8.help -- 帮助命令
4,Hadoop1.x完全分布式环境

Hadoop是一个分布式系统基础架构,主要解决海量数据的存储和海量数据的分析计算问题,其核心部件是HDFS与MapReduce。

HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
MapReduce是一个分布式计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。

把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。

把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map/Reduce计算的程序,可以完成计算任务。

5. Hadoop1.x完全1.1 HDFS架构

NameNode 指明每个文件块存在哪个节点上 DataNode存储实实在在的数据

1、NameNode是一个中心服务器,单一节点(简化系统的设计和实现,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问
2、文件操作,Namenode是负责文件元数据的操作,它知道数据的存放位置(例如NN知道数据块1存在001、006、008三台机器)。这些信息不是长久固定的,每次启动系统后需要重新从数据节点获取这些信息。Datanode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过Namenode,只询问它跟哪个DataNode联系,否则Namenode会成为系统的瓶颈
3、 副本存放在哪些Datanode上由Namenode来控制,根据全局情况作出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低读取网络开销和读取延时。HDFS分布式文件系统的内部有一个副本存放策略:以默认的副本数=3为例:①第一个副本块存本机(若客户端在集群中,不在的话随机选择一个较近的机器)②第二个副本在另一个机架的随机节点③第三个副本在第二个副本所处机架的随机节点
4、Namenode全权管理数据库的复制,它周期性的从集群中的每Datanode接收心跳信合和状态报告,接收到心跳信号意味着DataNode节点工作正常,块状态报告包含了一个该DataNode上所有的数据列表
4,Hadoop1.x分布式环境搭建

将准备好的安装包上传至 node01(keyfree环境),然后解压:

[root@node01 ~]# tar -zxvf hadoop-3.1.2.tar.gz -C /opt/yjx/

修改环境配置脚本文件 hadoop-env.sh :

[root@node01 ~]# cd /opt/yjx/hadoop-3.1.2/etc/hadoop/
[root@node01 hadoop]# vim hadoop-env.sh

在文件末尾添加以下内容:

export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

修改核心配置文件 core-site.xml :

[root@node01 hadoop]# vim core-site.xml

在 configuration 节点中添加以下内容:

<!-- 设置 NameNode 节点的 URI(包括协议、主机名称、端口号),用于 NameNode 与 DataNode 之间的通讯 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<!-- 设置 Hadoop 运行时临时文件的存放位置,比如 HDFS 的 NameNode 数据默认都存放这个目录下 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/var/yjx/hadoop/full</value>
</property>

修改 HDFS 配置文件 hdfs-site.xml :

[root@node01 hadoop]# vim hdfs-site.xml

在 configuration 节点中添加以下内容:

<!-- 设置 SecondaryNameNode 的 HTTP 服务器地址和端口 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node02:50090</value>
</property>
<!-- 设置 SecondaryNameNode 的 HTTPS 服务器地址和端口 -->
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>node02:50091</value>
</property>
<!-- 设置 HDFS 默认的数据块副本数。可以在创建文件时指定,如果创建时未指定,则使用默认值 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

修改 workers :

[root@node01 hadoop]# vim workers

用以下内容替换文件内容:

node01
node02
node03

将 node01 已配置好的 Hadoop 拷贝至 node02 和 node03

[root@node02 ~]# scp -r root@node01:/opt/yjx/hadoop-3.1.2 /opt/yjx/
[root@node03 ~]# scp -r root@node01:/opt/yjx/hadoop-3.1.2 /opt/yjx/

三个节点修改环境变量 vim /etc/profile ,在文件末尾添加以下内容:

export HADOOP_HOME=/opt/yjx/hadoop-3.1.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

修改完成后 source /etc/profile 重新加载环境变量。

格式化 NameNode

[root@node01 ~]# hdfs namenode -format

启动

[root@node01 ~]# start-dfs.sh

测试

访问:http://192.168.100.101:9870/

[123] ls /var/yjx/hadoop/full/dfs/

关闭

[root@node01 ~]# stop-dfs.sh

环境搭建成功后 shutdown -h now 关机拍摄快照。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值