CLOUD 04:zookeeper,kafka,hadoop高可用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CLOUD 04:zookeeper,kafka,hadoop高可用相关的知识,希望对你有一定的参考价值。
zookeeper 安装
1 禁用防火墙和 selinux
2 设置 /etc/hosts ip 主机名对应关系
3 安装 openjdk
zookeeper 角色,选举
leader 集群主节点
follower 参与选举的附属节点
observer 不参与选举的节点,同步 leader 的命名空间
1 拷贝配置文件
/usr/local/zookeeper/conf/zoo_sample.cfg 到
/usr/local/zookeeper/conf/zoo.cfg
2 修改配置文件vim /usr/local/zookeeper/conf/zoo.cfg
29 server.1=zk1:2888:3888
30 server.2=zk2:2888:3888
31 server.3=zk3:2888:3888
32 server.4=zk4:2888:3888:observer
3 创建目录 zookeeper 配置文件里面的 dataDir 指定的目录
mkdir /tmp/zookeeper
4 在目录下创建 myid 文件,写入自己的 id 值
echo 主机ID > /tmp/zookeeper/myid
如:
echo 1 > /tmp/zookeeper/myid
5 启动集群,查看角色
/usr/local/zookeeper/bin/zkServer.sh start
/usr/local/zookeeper/bin/zkServer.sh status
kafka 集群安装
1 禁用防火墙和 selinux
2 设置 /etc/hosts ip 主机名对应关系
3 安装 openjdk
4 安装 kafka 到 /usr/local/kafka
5 修改配置文件 /usr/local/kafka/config/server.properties
broker.id= id值不能相同
zookeeper.connect=zk1:2181,zk4:2181
启动 kafka
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
同步到其他机器
rsync -zaSH m11:/usr/local/kafka /usr/local/
vim kafka/config/server.properties
broker.id= id值不能相同
验证:
jps 能看到 kafka
netstat 能看到 9092 被监听
创建主题
bin/kafka-topics.sh --create --zookeeper zk4:2181 --replication-factor 1 --partitions 1 --topic nsd1703
查看显示已存在的主题
bin/kafka-topics.sh --list --zookeeper zk4:2181
查看主题的详细信息
bin/kafka-topics.sh --describe --zookeeper zk1:2181,zk2:2181 --topic nsd1703
生存者发布信息
bin/kafka-console-producer.sh --broker-list zk1:9092,zk3:9092 --topic nsd1703
消费者消费信息
bin/kafka-console-consumer.sh --zookeeper zk1:2181,zk2:2181 --topic nsd1703 --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server zk1:9092,zk4:9092 --topic nsd1703
--from-beginning 是从头开始消费消息
hadoop 高可用
初始化 4.20 机器
设置/etc/hosts 可以ping通所有
关闭selinux,firewalld
安装openjdk jps
设置 免密码登陆4.10到所有机器 4.20到所有机器
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>
<property>
<name>hadoop.proxyuser.nfsuser.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.nfsuser.hosts</name>
<value>*</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>master1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>master2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>master1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>master2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name> #使用连接组
<value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/hadoop/journal</value> #使用此类监控
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value> #使用SSH切换
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value> #默认密钥路径
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value> #失败自动切换
</property>
</configuration>
同步配置到所有集群机器
在其中一台初始化 zookeeper 集群
在master执行
bin/hdfs zkfc -formatZK
在定义的节点启动 journalnode
在m11,m12,m13执行
sbin/hadoop-daemon.sh start journalnode
在其中一台 namenode 上执行格式化命令
在master执行
bin/hdfs namenode –format
格式化以后把数据目录拷贝到另一台 namenode
在master上执行
rsync -azSH --delete /var/hadoop new:/var/
初始化 JournalNode
在另一台 namenode #new机器上
./bin/hdfs namenode -initializeSharedEdits
停止 JournalNode
在m11,m12,m13执行
sbin/hadoop-daemon.sh stop journalnode
启动 dfs
在master
./sbin/start-dfs.sh
验证配置
bin/hadoop dfsadmin -report
查看集群状态 bin/hdfs haadmin -getServiceState nn1 bin/hdfs haadmin -getServiceState nn2
bin/hadoop fs -ls hdfs://mycluster/
bin/hadoop fs -mkdir hdfs://mycluster/input
验证高可用,关闭 active namenode
sbin/hadoop-daemon.sh stop namenode
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>master2</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-ha</value>
</property>
</configuration>
启动服务,检查状态
sbin/start-yarn.sh
bin/yarn rmadmin -getServiceState rm1
bin/yarn rmadmin -getServiceState rm2
以上是关于CLOUD 04:zookeeper,kafka,hadoop高可用的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Data Flow (SCDF) + Apache Kafka - 在哪里部署 Kafka 代理?