hadoop集群可以运行的3个模式,hadoop如何实现高可用
chanong
|1.概述本书主要记录了Hadoop的HDFS高可用集群的构建。 HDFS高可用集群依赖于Zookeeper。有关设置Zookeeper 集群的教程,请参阅上一篇文章。 01.Zookeeper集群搭建zookeeper信息zookeeper001.local.com:2181zookeeper002.local.com:2181zookeeper003.local.com:21812.服务器信息主机名
知识产权
中央处理器
内存
磁盘
操作系统
hdfs001.local.com
172.21.0.21
4核
8GiB
200GiB
圣托斯7.x
hdfs002.local.com
172.21.0.22
4核
8GiB
200GiB
圣托斯7.x
hdfs003.local.com
172.21.0.23
4核
8GiB
200GiB
圣托斯7.x
主机名更改命令# 在服务器172.21.0.21 上运行$ sudo hostnamectl set-hostname hdfs001.local.com。在服务器172.21.0.22 上运行$ sudo hostnamectl set-hostname hdfs002.local.com#。在服务器172.21 上运行$ sudo hostnamectl。 0.23 set-hostname hdfs003.local.com3.创建部署账户# 分别为hdfs001,002,003 创建hdfsuser # 创建账户$ sudo useradd -m -s /bin/bash -r hdfsuser # 设置密码$ sudo passwd hdfsuser # 使用sudo 设置账户权限$ sudo vim /etc/sudoers hdfsuser ALL=(ALL)NOPASSWD: ALL4、调整安全项,对hdfs001,002,003执行以下操作,关闭selinux#暂时关闭$ sudo setenforce 0#永久关闭$ sduo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 关闭防火墙$ systemctl stopfirewalld$systemctldisablefirewalld5. 在服务器之间设置无密码登录。编辑三台服务器(hdfs001、hdfs001、hdfs002、hdfs003)的/etc/hosts 文件并添加服务器主机名映射: $ sudo vim /etc/hosts172.21.0.11zookeeper001.local.com172.21.0.12zookeeper002.local.com172 .21.0.13zookeeper003.local .com172.21.0.21 hdfs001.local.com172.21.0.22 hdfs002.local.com172.21.0.23 hdfs003.local.com 生成服务器密钥# 切换到hdfsuser 帐户$ su - hdfsuser # 按住Enter $ ssh-keygen 将密钥复制到其他服务器$ ssh-copy-id hdfs001.local.com$ ssh-copy-id hdfsr002.local.com$ ssh-copy-id hdfs003.local.com6.部署Java环境并解压jdk1 .8.0_151。 tar.gz 到Java 目录下的/usr/$ sudo tar -xvf jdk1.8.0_151.tar.gz$ sudo mv jdk1.8.0_151 /usr/java 编辑/etc/profile,设置Java 环境变量$ sudo vim /etc /profile.d/javaenv.sh #!/bin/bash#javaexport JAVA_HOME=/usr/java/jdk1.8.0_151export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.$JAVA_HOME/lib/dt.jar:$ JAVA_HOME/lib/tools.jar 启用配置$ source /etc/profile.d/javaenv.sh verify $ java -versionjava version '1.8.0_151'Java(TM) SE 运行时环境(build 1.8.0_151-b12) Java HotSpot( TM) 64位服务器VM(build 25.151-b12,混合模式)7.构建HDFS集群7.1。配置hadoop-3.3.3.tar.gz并解压到/opt/software目录。 $ tar -xvf hadoop-3.3.3 .tar.gz# 创建安装目录$ sudo mkdir /opt/software$ sudo chown -R hdfsuser.hdfsuser /opt/software# 移动到/opt/software$ mv hadoop-3.3.3编辑/opt/software /etc/在profile.d/hadoopenv.sh 中添加Hadoop 环境变量$ sudo vim /etc/profile.d/hadoop-3.3.3export HADOOP_PREFIX=/opt/software/hadoop-3.3.3export HADOOP_HDFS_HOME=/opt /software/hadoop-3.3 .3export HADOOP_CONF_DIR=/opt/software/hadoop-3.3.3/etc/hadoopexport HADOOP_COMMON_LIB_NATIVE_DIR=/opt/software/hadoop-3.3.3/lib/nativeexport HADOOP_OPTS='-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB _NATIVE_DIR 'export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 编辑hadoop-env.sh$ cd /opt/software/hadoop-3.3.3/etc/hadoop$ vim hadoop -env. sh# 添加以下内容。 Hadoop操作用户是当前系统用户。 MANAGER_USER='hdfsuser ' 编辑core-site.xml。为了保证数据安全,hdfs主节点设置在hdfs001.local.com和hdfs002.local.com。
$ cd /opt/software/hadoop-3.3.3/etc/hadoop$ vim core-site.xml fs.defaultFShdfs://ns1/hadoop.proxyuser.hdfsuser.hosts*hadoop.proxyuser.hdfsuser.groups*hadoop.tmp。 dir/hdata/hadoop_data/temDirha.zookeeper.quorumzookeeper001.local.com:2181,zookeeper002.local.com:2181,zookeeper003.local.com:2181fs.hdfs.implorg.apache.hadoop.hdfs.DistributedFileSystemhdfs: uri文件系统s.edit hdfs 站点。 xml$ cd /opt/software/hadoop-3.3.3/etc/hadoop$ vim hdfs-site.xml dfs.ha.namenodes.ns1nn1,nn2dfs.namenode.rpc-address.ns1.nn1hdfs001.local.com:9000dfs.namenode。 http-address.ns1.nn1hdfs001.local.com:50070dfs.namenode.rpc-address.ns1.nn2hdfs002.local.com:9000dfs.namenode.http-address.ns1.nn2hdfs002.local.com:50070dfs.namenode.shared.edits.d irqjournal ://hdfs001 .local.com:8485;hdfs002.local.com:8485;hdfs003.local.com:8485/ns1dfs.journalnode.edits.dir/hdata/hadoop_data/journaldatadfs.ha.automatic-failover.enabledtruefs.client.failover.proxy.pro比达尔。 ns 1org .apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProviderdfs.ha.fencing.ssh.connect-timeout30000yarn.resourcemanager.cluster-idyrcyarn.resourcemanager.ha.rm-idsrm1,rm2yarn.resourcemanager.hostname.rm1hdfs001.local .comyarn .resourcemanager.hostname.rm2hdfs002.local.comyarn.resourcemanager.zk-addresszookeeper001.lcoal.com:2181,zookeeper002.lcoal.com:2181,zookeeper003.lcoal.com:2181yarn.nodemanager.aux-servicesmapreduce_ sh混乱yarn.node manager.env-whitelistJAVA_HOME, HADOOP_COMMON_HOME , HADOOP_HDFS_HOME,HADOOP_CONF_DIR ,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOMEyarn.nodemanager.vmem-check-enabledfalseyarn.nodemanager.resource.memory-mb49152yarn.scheduler.maximum-allocation-mb49152授权配置帐户,编辑hadoop-policy.xml 并添加内容* 更改到hdfs 用户。 $ cd /opt/software/hadoop-3.3.3/etc/hadoop$ vim hadoop-policy.xml security.client.protocol.acl hdfsuser editworkers file$ cd /opt/software/hadoop-3.3.3/etc/hadoop $ vim workshdfs001.local.comhdfs002.local.comhdfs003.local.com 将hadoop-3.3.3复制到其他节点的/opt/software目录下,并创建数据目录$ sudo mkdir /hdata$ sudo chown -R hdfsuser /hdata $ mkdir - p /hdata/hadoop_data/{namenode,datanode,temDir,journaldata}更改其他节点上/etc/profile.d 中的hadoop 环境变量和源以启用它们。 $ source /etc/profile.d/hadopenv. 首次运行sh7.2 启动journalnode#。运行$ cd /opt/software/hadoop-3.3.3/sbin$ ./hadoop-daemon.sh 分别在001、002、003 处启动journalnode# $ ./hadoop-daemon。 sh startjournalnode#检查journalnode进程是否启动$ jps1539journalnodestartsformating #格式化hdfs001.local.com上的hdfs $ hdfs namenode format#node hdfs001.local 格式化.com后,打开服务器上的namenode $ hdfs --daemon start namenode open namenode# on hdfs001.local.com 同步格式信息hdfs namenode -bootstrapStandby# 同步hdfs002.local.com 上的格式信息然后打开namenode 并运行hdfs --daemon start namenode format ZKFC on hdfs002 server (只需运行on hdfs001.local.com) # 如果是交互式的,则通过输入y$ hdfs zkfc -formatZK 启动hdfs 并在hdfs001.local.com$ 上启动YARNA $ cd /opt/software/hadoop-3.3.3 /sbin$ ./start-dfs .sh 如果不使用hadoop,计算可能无法启动。 $ cd /opt/software/hadoop-3.3.3/sbin$ ./start-yarn.sh 至此,您的Hadoop HA 集群已经搭建完毕,您可以使用一些常用命令来测试您的Hadoop 集群。
7.2 非首次启动,使用hdfs001.local.com$ cd /opt/software/hadoop-3.3.3/sbin$ ./start-dfs.sh 启动HDFS,使用hdfs001.local.com 启动YARN。向上。根据实际需要。 $ cd /opt/software/hadoop-3.3.3/sbin$ ./start-yarn.sh7.3 查询集群状态和namenode节点状态# hdfs001.local.com status $ hdfs haadmin getServiceState nn1# 获取hdfs002。 local.com status $ hdfs haadmin getServiceState nn2 集群是否处于安全模式$ hdfs dfsadmin safemode get








