Hadoop高可用集群部署-确保数据安保和无缝操作 (hadoop集群搭建步骤)
背景
消费中Hadoop散布式集群中或许存在着单点缺点疑问,假设Namenode宕机或是软配件更新,集群将不可经常使用,所以启动搭建高可用的来消弭单点缺点。
Hadoop引见
Hadoop集群普通为一个NameNode和ResourceManager,但在实践消费环境中,若恰恰具备NameNode和ResourceManager的节点出现缺点,那么整个Hadoop集群将会解体,这是由于在HDFS中NameNode是系统的外围节点,ResourceManager担任整个系统的资源治理和调配。
为了处置单点缺点疑问,在Hadoop2后中引入了高可用机制,允许NameNode和ResourceManager一个主节点和一个备用节点,而在Hadoop3中继续对其启动了优化和优化,它允许一个主节点和多个备用节点。所谓高可用(HighAvlability,HA)就是7*24小时不终止服务,消弭单点缺点。
HadoopHA严厉来说应该分红各个组件的HA机制:HDFS的HA和YARN的HA,可以经过性能多个NameNode和ResourceManager(Active/Standby)实如今集群中的热备来处置上述疑问。
环境预备:
图片
节点相关进程如下:
图片
HDFS和YARNHA集群搭建
3.1下载hadoop装置包
官方下载hadoop3.3.0装置包解压至/usr/local下3台机器需修正的性能文件目录为/usr/local/hadoop/etc/hadoop下。
3.2hadoop.env
exportJAVA_HOME=/usr/local/jdk#性能jdk门路#减少两行exportHDFS_JOURNALNODE_USER=rootexportHDFS_ZKFC_USER=root
3.3core-site.xml
<?xml?><?xml-stylesheet?><configuration><property><name>fs.defaultFS</name><value>hdfs://ns</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/tmp</value></property><property><name>dfs.journalnode.edits.dir</name><value>/usr/local/hadoop/tmp/jn</value></property><property><name>ha.zookeeper.quorum</name><value>hadoop:2181,k8s-2:2181,k8s-3:2181</value></property></configuration>
3.4hdfs-site.xml
<?xml?><?xml-stylesheet?><configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>/usr/local/hadoop/dfs/data</value></property><property><name>dfs.journalnode.edits.dir</name><value>/usr/local/hadoop/dfs/journalnode</value><description>ThepathwheretheJournalNodedaemonwillstoreitslocalstate.</description></property><property><name>dfs.nameservices</name><value>ns</value><description>Thelogicalnameforthisnewnameservice.</description></property><property><name>dfs.ha.namenodes.ns</name><value>nn1,nn2,nn3</value><description>UniqueidentifiersforeachNameNodeinthenameservice.</description></property><property><name>dfs.namenode.rpc-address.ns.nn1</name><value>hadoop:8020</value><description>Thefully-qualifiedRPCaddressfornn1tolistenon.</description></property><property><name>dfs.namenode.rpc-address.ns.nn2</name><value>k8s-2:8020</value><description>Thefully-qualifiedRPCaddressfornn2tolistenon.</description></property><property><name>dfs.namenode.rpc-address.ns.nn3</name><value>k8s-3:8020</value><description>Thefully-qualifiedRPCaddressfornn3tolistenon.</description></property><property><name>dfs.namenode.http-address.ns.nn1</name><value>hadoop:9870</value><description>Thefully-qualifiedHTTPaddressfornn1tolistenon.</description></property><property><name>dfs.namenode.http-address.ns.nn2</name><value>k8s-2:9870</value><description>Thefully-qualifiedHTTPaddressfornn2tolistenon.</description></property><property><name>dfs.namenode.http-address.ns.nn3</name><value>k8s-3:9870</value><description>Thefully-qualifiedHTTPaddressfornn3tolistenon.</description></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop:8485;k8s-3:8485;k8s-2:8485/ns</value><description>TheURIwhichidentifiesthegroupofJNswheretheNameNodeswillwrite/readedits.</description></property><property><name>dfs.client.failover.proxy.provider.ns</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value><description>TheJavaclassthatHDFSclientsusetocontacttheActiveNameNode.</description></property><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value><description>AlistofscriptsorJavaclasseswhichwillbeusedtofencetheActiveNameNodeduringafailover.sshfence-SSHtotheActiveNameNodeandkilltheprocessshell-runanarbitraryshellcommandtofencetheActiveNameNode</description></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value><description>SetSSHprivatekeyfile.</description></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value><description>Automaticfailover.</description></property></configuration>
3.5mapred-site.xml
<?xml?><?xml-stylesheet?><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property></configuration>
3.6yarn-site.xml
<?xml?><configuration><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value><description>EnableRMHA.</description></property><property><name>yarn.resourcemanager.cluster-id</name><value>yrc</value><description>Identifiesthecluster.</description></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2,rm3</value><description>ListoflogicalIDsfortheRMs.e.g.,"rm1,rm2".</description></property><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop</value><description>Setrm1serviceaddresses.</description></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>k8s-2</value><description>Setrm2serviceaddresses.</description></property><property><name>yarn.resourcemanager.hostname.rm3</name><value>k8s-3</value><description>Setrm3serviceaddresses.</description></property><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop:8088</value><description>Setrm1webapplicationaddresses.</description></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>k8s-2:8088</value><description>Setrm2webapplicationaddresses.</description></property><property><name>yarn.resourcemanager.webapp.address.rm3</name><value>k8s-3:8088</value><description>Setrm3webapplicationaddresses.</description></property><property><name>hadoop.zk.address</name><value>hadoop:2181,k8s-2:2181,k8s-3:2181</value><description>AddressoftheZK-quorum.</description></property></configuration>
3.7workers
hadoopk8s-2k8s-3
装置zookeeper
版本:zookeeper-3.6.4
经过下载装置包,3台机器启动解压性能装置。
echo"1">/data/zookeeperdata/myid#不同机器id不同
zoo.cfg性能如下:
tickTime=2000initLimit=10syncLimit=5>exportJAVA_HOME=/usr/local/jdkexportHAD00P_HOME=/usr/local/hadoopexportPATH=$PATH:$HADOOP_HOME/binexportHADOOP_CLASSPATH=`hadoopclasspath`
source/etc/profile
启动集群
在一切节点上经常使用rm-rf/usr/local/hadoop/dfs命令,删除之前创立的存储门路,同时在master节点上口头mkdir-p/usr/local/hadoop/dfs/name/usr/local/hadoop/dfs/data/usr/local/hadoop/dfs/journalnode,再次创立存储门路。
在一切节点上经常使用rm-rf/usr/local/hadoop/tmp/usr/local/hadoop/logs&&mkdir-p/usr/local/hadoop/tmp/usr/local/hadoop/logs命令,重置暂时门路和日志消息。
经过以上步骤,HadoopHA集群就性能成功了,当第一次性启动HA集群时须要依次口头以下命令:
$ZOOKEEPER_HOME/bin/zkServer.shstart#开启Zookeeper进程(一切节点上口头)$HADOOP_HOME/bin/hdfs--daemonstartjournalnode#开启监控NameNode的治理日志的JournalNode进程(一切节点上口头)$HADOOP_HOME/bin/hdfsnamenode-format#命令格局化NameNode(在master节点上口头)scp-r/usr/local/hadoop/dfsk8s-2:/usr/local/hadoop#将格局化后的目录复制到slave1中(在master节点上口头)scp-r/usr/local/hadoop/dfsk8s-3:/usr/local/hadoop#将格局化后的目录复制到slave2中(在master节点上口头)$HADOOP_HOME/bin/hdfszkfc-formatZK#格局化ZookeeperFailoverControllers(在master节点上口头)start-dfs.sh&&start-yarn.sh#启动HDFS和Yarn集群(在master节点上口头)
若不是第一次性启动HA集群(惯例启动HA集群),则只有要依次口头以下命令:
$ZOOKEEPER_HOME/bin/zkServer.shstart#开启Zookeeper进程(一切节点上口头)start-all.sh或许$HADOOP_HOME/sbin/start-dfs.sh&&$HADOOP_HOME/sbin/start-yarn.sh#启动HDFS和Yarn集群(在master节点上口头)
启动成功后每个节点经常使用jps命令会出现NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、QuorumPeerMain和Jps8个进程。
图片
图片
经过页面访问检查:
图片
图片
hdfsHA验证
6.1检查各个节点NameNode形态
图片
6.2验证hdfs的高可用
在开启HA集群并成功启动的状况下,在master节点中经常使用hdfshaadmin-getAllServiceState命令检查各个节点NameNode形态,接上去中止active形态节点的NameNode进程。
图片
Namenodeactive智能跳转其余节点,集群仍可用。
图片
图片
随后再启动该节点NameNode进程,最后再次检查形态,可以发现HDFSHA是反常的,并且没有出现抢占。
图片
验证yarn高可用
在master节点中经常使用yarnrmadmin-getAllServiceState命令检查各个节点ResourceManager形态,接上去中止active形态节点的ResourceManage进程,ResourceManageactive智能跳转到其余节点,集群仍可用,随后再启动该节点ResourceManager进程,最后再次检查形态,Failed形态复原为standby。
图片
若要封锁集群可以master经常使用$HADOOP_HOME/sbin/stop-yarn.sh&&$HADOOP_HOME/sbin/stop-dfs.sh命令或许stop-all.sh即可封锁hadoop集群,而后封锁zookeeper,三台机器区分口头/data/apache-zookeeper-3.6.4-bin/bin/zkServer.shstop。
hadoop tdh是什么意思
Hadoop TDH是什么?
Hadoop TDH(Teradata Distribution of Hadoop)是由全球领先的大数据分析服务提供商——特拉迪斯(Teradata)打造的分布式存储和处理平台。它是基于Apache Hadoop开发的一款商业化Hadoop解决方案,旨在解决Hadoop开源软件复杂性和部署难度的问题。TDH集成了多种Hadoop核心技术及特拉迪斯的独特优势,拥有完善的数据治理和高可用性的架构设计,可为企业级应用场景提供卓越的大数据存储和计算能力。
Hadoop TDH的优势
Hadoop TDH的优势主要包括高可用性、可扩展性和稳定性。它采用分布式存储和计算技术,支持多节点的集群部署,从而保证了数据的可靠性和高可用性。同时,基于Apache Hadoop的开源架构,它还可以衍生出各种Hadoop生态圈里的工具和组件,如Spark、Kafka、HBase等等,从而实现了数据处理的多样性和灵活性。此外,TDH还可以对大数据进行快速、高效的分析和挖掘,可帮助企业更好地理解和利用重要的商业数据。
Hadoop TDH的应用场景
Hadoop TDH的应用场景非常广泛,主要在金融、电信、物流、医疗和制造等领域。对于金融行业来说,TDH可以协助银行、证券、保险机构等机构实现数据风险管理、反欺诈分析、贷款风险控制等业务目标。对于电信行业来说,可以基于TDH构建智能营销平台,实现精准化营销和客户细分管理,提升用户粘性和品牌意识。此外,对于制造业领域,TDH可以帮助企业实现设备智能监测、生产线优化、质量控制等目标,提升生产效率和产品质量水平。
Hadoop框架:HDFS高可用环境配置
在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Standby两个NameNodes节点实现在集群中对NameNode的热备来消除单节点故障问题,如果单个节点出现故障,可通过该方式将NameNode快速切换到另外一个节点上。
ZooKeeper在大数据体系中非常重要,协调不同组件的工作,维护并传递数据,例如上述高可用下自动故障转移就依赖于ZooKeeper组件。
创建目录
拷贝Hadoop目录
配置
配置 ,添加内容如下
依次启动journalnode服务
删除hopHA下数据
NN1格式化并启动NameNode
NN2同步NN1数据
NN2启动NameNode
查看当前状态
在NN1上启动全部DataNode
NN1切换为Active状态
配置 ,新增内容如下,同步集群
配置 ,新增内容如下,同步集群
关闭全部HDFS服务
启动Zookeeper集群
hop01初始化HA在Zookeeper中状态
hop01启动HDFS服务
NameNode节点启动ZKFailover
这里hop01和hop02先启动的服务状态就是Active,这里先启动hop02。
结束hop02的NameNode进程
等待一下查看hop01状态
基本流程和思路与HDFS机制类似,依赖Zookeeper集群,当Active节点故障时,Standby节点会切换为Active状态持续服务。
环境同样基于hop01和hop02来展示。
配置 ,同步集群下服务
重启journalnode节点
在NN1服务格式化并启动
NN2上同步NN1元数据
启动集群下DataNode
NN1设置为Active状态
先启动hop01即可,然后启动hop02。
hop01启动yarn
hop02启动ResourceManager
查看状态
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。