大数据笔记
Zookeeper的安装及使用
安装步骤如下:
[root@localhost ~]# cd /home/software
[root@localhost software]# tar -xvf zookeeper-3.4.10.tar.gz
[root@localhost software]# cd zookeeper-3.4.10
[root@localhost zookeeper-3.4.10]# cd conf
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
[root@localhost zookeeper-3.4.10]# cd …/bin
开启服务
[root@localhost ~]# cd /home/software/zookeeper-3.4.10/bin
[root@localhost bin]# sh zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/software/zookeeper-3.4.10/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED
关闭服务
方式一:通过通过指令关闭
[root@localhost bin]# sh zkServer.sh stop
方式二:通过结束进程关闭
[root@localhost bin]# jps
3809 Jps
3713 QuorumPeerMain
[root@localhost bin]# kill -9 3713
开启客户端
记得最后按Enter键
[root@localhost bin]# sh zkCli.sh
Connecting to localhost:2181
…………
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
退出客户端
[zk: localhost:2181(CONNECTED) 0] quit
查看根节点下有什么节点
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
查看zookeeper节点下有什么节点
[zk: localhost:2181(CONNECTED) 2] ls /zookeeper
[quota]
知识点:
1.zk有一个根节点/
2.每一个节点都可以有自己的子节点
3.每一个节点成为znode节点
4.多个znode节点最终形成的成为znode树
5.每一个znode节点都可以存储数据,存储的数据是字节形式
6.zk为了提供快速的数据访问,会将数据维系到内存中
7.zk为了防止数据丢失,也会在磁盘上进行落地存储,存储的路径可以通过配置文件来指定
8.zk的所有操作指令,比如查看、创建节点、更新、删除都是基于路径来操作的。
9.zk中的路径是具有全局唯一性,所以可以基于这个特性来实现命名服务
创建节点
有如下四种类型:
①创建普通节点(注意:必须写初始数据,否则创建不成功)
也叫持久节点(编号0):可以挂载子节点
[zk: localhost:2181(CONNECTED) 3] create /park01 hello1805
Created /park01
[zk: localhost:2181(CONNECTED) 5] ls /
[park01, zookeeper]
可以创建空的初始数据
[zk: localhost:2181(CONNECTED) 8] create /park01/node02 ‘’
Created /park01/node02
②创建临时节点(编号1,不可以挂载子节点。一旦宕机或客户端下线,临时节点被删除)
[zk: localhost:2181(CONNECTED) 22] create -e /park02 ‘’
③创建顺序节点(编号2,会在指定的路径后跟上递增的顺序号)
[zk: localhost:2181(CONNECTED) 0] create -s /node hello
Created /node0000000004
[zk: localhost:2181(CONNECTED) 1] create -s /node hello
Created /node0000000005
④创建临时顺序节点(编号3)
[zk: localhost:2181(CONNECTED) 3] create -e -s /node hello
获取指定节点信息
[zk: localhost:2181(CONNECTED) 11] get /park02
cZxid = 0x7 //创建事务编号,(增删改)编号依次递增
ctime = Sat Oct 13 08:00:05 PDT 2018 //创建时间
mZxid = 0x7 //修改事务编号,编号递增
mtime = Sat Oct 13 08:00:05 PDT 2018 //修改时间
pZxid = 0x7 //最大事务id
cversion = 0 //创建版本
dataVersion = 0 //数据版本,每修改一次,数据版本+1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 0
[zk: localhost:2181(CONNECTED) 12] get /park01
hello1805
cZxid = 0x4
ctime = Sat Oct 13 07:56:35 PDT 2018
mZxid = 0x4
mtime = Sat Oct 13 07:56:35 PDT 2018
pZxid = 0x6
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 2
修改节点信息
[zk: localhost:2181(CONNECTED) 13] set /park01 you
cZxid = 0x4
ctime = Sat Oct 13 07:56:35 PDT 2018
mZxid = 0x8
mtime = Sat Oct 13 08:02:39 PDT 2018
pZxid = 0x6
cversion = 2
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 2
再次查看数据,查看变化
[zk: localhost:2181(CONNECTED) 14] get /park01
you
cZxid = 0x4
ctime = Sat Oct 13 07:56:35 PDT 2018
mZxid = 0x8
mtime = Sat Oct 13 08:02:39 PDT 2018
pZxid = 0x6
cversion = 2
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 2
事物id全局递增
删除节点
[zk: localhost:2181(CONNECTED) 15] delete /park02
包含子节点不能直接删除,可以用rmr指令递归删除
[zk: localhost:2181(CONNECTED) 20] rmr /park01
分布式存在的问题
1.需要设置管理节点
2.如果管理节点只有一个,那么就存在单点问题
3.为了解决单点问题,引入管理集群,就会产生多个管理者的情况
4.需要在管理集群中选出leader
5.确定一套选举机制
6.管理节点之间实现信息的共享
7.需要一套机制确定一个唯一的leader
8.分布式锁:死锁,活锁(没有把持资源,占用CPU)
集群配置
1.克隆出另外2台虚拟机
2.创建存放数据文件的目录
[root@localhost zookeeper-3.4.10]# mkdir tmp
3.创建文件myid,写入server的id(1或2或3……)
[root@localhost zookeeper-3.4.10]# cd tmp
[root@localhost tmp]# vim myid
4.修改配置文件
[root@localhost bin]# vim …/conf/zoo.cfg
注意:服务器编号唯一。
5.依次开启三台虚拟机的Zookeeper服务,一般第二个开启的为leader,其它为follower。可以通过sh zkServer.sh status命令查看主从状态。
6.通过sh zkCli.sh命令进入客户端。在任一台虚拟机进行的操作,其他集群虚拟机同步生效。
注意:
①提示started并不表示真的启动成功了,查看status状态可以确认是否启动成功。
②如果集群只启动一个节点,默认是失败的,至少启动一半以上的节点才能查看状态。
查看日志
Zookeeper日志是二进制格式,无法直接查看。解决办法如下:
进入存放日志的目录
[root@localhost lib]# cd …/tmp/version-2
查看日志文件
[root@localhost version-2]# ls
acceptedEpoch currentEpoch log.100000001 snapshot.100000000
需要先把slf4j-api-1.6.1.jar和zookeeper-3.4.10.jar复制到存放日志的version-2目录下
[root@localhost version-2]# java -classpath .:slf4j-api-1.6.1.jar:zookeeper-3.4.10.jar org.apache.zookeeper.server.LogFormatter ./log.100000001
nc的安装和使用
两种安装方法:
1.直接yum获取安装
[root@localhost software]# yum install nc
2.下载rpm安装包后安装
[root@localhost software]# rpm -ivh nc-1.84-24.el6.x86_64.rpm
常用指令
查看端口2181(Zookeeper)配置信息
[root@localhost software]# echo conf|nc 127.0.0.1 2181
clientPort=2181
dataDir=/home/software/zookeeper-3.4.10/tmp/version-2
dataLogDir=/home/software/zookeeper-3.4.10/tmp/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=3
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0
查看2181端口状态
[root@localhost software]# echo stat|nc 192.168.157.130 2181
Zookeeper version: 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
Clients:
/192.168.157.132:446430
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x300000002
Mode: follower
Node count: 5
测试是否启动了该Server,若回复imok表示已经启动
[root@localhost software]# echo ruok|nc 127.0.0.1 2181
关掉server
[root@localhost software]# echo kill | nc 127.0.0.1 2181
Hadoop的安装使用
安装前准备工作
1.关闭防火墙
service iptables stop
chkconfig iptables off
2.配置主机名
注意:安装hadoop的集群主机名不能重复!不能有下划线!不然会找不到主机,无法启动!
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop01
source /etc/sysconfig/network
3.配置Hosts
vi /etc/hosts
填入以下内容
127.0.0.1 hadoop01
192.168.157.131 hadoop01
4.因使用过程会多次要求输入密码,所以先设置免密登录。
生成自己的公钥和私钥,生成的公私钥将自动存放在/root/.ssh目录下。
[root@localhost software]# ssh-keygen
把生成的公钥copy到本机
[root@localhost software]# ssh-copy-id root@192.168.157.131
安装步骤
5.获取安装包并解压
[root@localhost software]# tar -xvf hadoop-2.7.1_64bit.tar.gz
6.创建目录存放数据
mkdir /home/software/hadoop-2.7.1/tmp
7.修改多处配置文件
[root@localhost software]# cd hadoop-2.7.1/etc/hadoop
[root@localhost hadoop]# vim hadoop-env.sh
修改第25行 export JAVA_HOME=/home/software/jdk1.8.0_65
[root@localhost hadoop]# vim core-site.xml
修改最后两行内容如下:
fs.defaultFS
hdfs://hadoop01:9000
hadoop.tmp.dir
/home/software/hadoop-2.7.1/tmp
[root@localhost hadoop]# vim hdfs-site.xml
最后两行修改如下:
dfs.replication
1
8.复制并修改配置文件mapred-site.xml
[root@localhost hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@localhost hadoop]# vim mapred-site.xml
最后两行修改如下:
mapreduce.framework.name
yarn
[root@localhost hadoop]# vim yarn-site.xml
最后两行修改如下:
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>h