既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
vim /opt/hadoop/server/hadoop-3.2.4/etc/hadoop/core-site.xml
- 添加如下配置:
<configuration>
<!-- 指定 namespace -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 指定 zookeeper 地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>zzy01:2181,zzy02:2181,zzy03:2181</value>
</property>
<!-- hadoop 链接 zookeeper 的超时时长设置 -->
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>30000</value>
<description>ms</description>
</property>
<!-- 启用回收站 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>
3、 配置hdfs-site.xml (zzy01,zzy02,zzy03)
vim /opt/hadoop/server/hadoop-3.2.4/etc/hadoop/hdfs-site.xml
- 添加如下配置:
<configuration>
<!-- journalnode 集群之间通信的超时时间 -->
<property>
<name>dfs.qjournal.start-segment.timeout.ms</name>
<value>60000</value>
</property>
<!--指定 hdfs 的 nameservice 为 mycluster,需要和 core-site.xml 中的保持一致 dfs.ha.namenodes.[nameservice id]为在 nameservice 中的每一个 NameNode 设置唯一标示符。配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。如果使用"mycluster"作为 nameservice ID -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- mycluster 下面有两个 NameNode,分别是 zzy01,zzy02 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>zzy01,zzy02</value>
</property>
<!-- master 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.zzy01</name>
<value>zzy01:8020</value>
</property>
<!-- zzy02 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.zzy02</name>
<value>zzy02:8020</value>
</property>
<!-- master 的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.zzy01</name>
<value>zzy01:9870</value>
</property>
<!-- zzy02 的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.zzy02</name>
<value>zzy02:9870</value>
</property>
<!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表。该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId journalId 推荐使用 nameservice,默认端口号是:8485 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://zzy01:8485;zzy02:8485;zzy03:8485/mycluster</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
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<!-- 使用 sshfence 隔离机制时需要 ssh 免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 指定副本数 -->
<!-- <property>
<name>dfs.replication</name>
<value>2</value>
</property> -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/tmp/data</value>
</property>
<!-- 指定 JournalNode 在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/hadoop/data/tmp/journal</value>
</property>
<!-- 开启 NameNode 失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 启用 webhdfs -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!-- 配置 sshfence 隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
<value>60000</value>
</property>
</configuration>
4、 配置mapred-site.xml
不需要变更
5、 配置yarn-site.xml (zzy01,zzy02,zzy03)
vim /opt/hadoop/server/hadoop-3.2.4/etc/hadoop/yarn-site.xml
- 添加如下配置:
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 开启 RM 高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定 RM 的 cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定 RM 的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定 RM 的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>zzy01</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>zzy02</value>
</property>
<!--在namenode1上配置rm1,在namenode2上配置rm2,注意:一般都喜欢把配置好的文件远程复制到其它机器上,但这个在YARN的另一个机器上一定要修改 -->
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>zzy01:8088</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm1</name>
<value>zzy01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm1</name>
<value>zzy01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
<value>zzy01:8031</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>zzy02:8088</value>
</property>
<property>
<name>yarn.resourcemanager.address.rm2</name>
<value>zzy02:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2</name>
<value>zzy02:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
<value>zzy02:8031</value>
</property>
<!-- 指定 zk 集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>zzy01:2181,zzy02:2181,zzy03:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!-- 启用自动恢复 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 制定 resourcemanager 的状态信息存储在 zookeeper 集群上 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!-- 白名单
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN
_HOME,HADOOP_MAPRED_HOME</value>
</property> -->
<property>
<name>yarn.log.server.url</name>
<value>http://zzy01:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>/opt/hadoop/server/hadoop-3.2.4/etc/hadoop:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/common/lib/*:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/common/*:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/hdfs:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/hdfs/lib/*:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/hdfs/*:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/mapreduce/lib/*:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/mapreduce/*:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/yarn:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/yarn/lib/*:/opt/hadoop/server/hadoop-3.2.4/share/hadoop/yarn/*</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>6</value>
</property>
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.6</value>
</property>
</configuration>
6、 创建tmp , logs, tmp/下创建name,data,journal目录 (zzy01,zzy02,zzy03)
mkdir /opt/hadoop/data/tmp/name
mkdir /opt/hadoop/data/tmp/data
mkdir /opt/hadoop/data/tmp/journal
三、启动集群(HA)
1、启动zookeeper集群并查看状态 (zzy01,zzy02,zzy03)
# 进入到每个DN节点,启动ZK服务
/opt/zookeeper-3.9.1/bin/zkServer.sh start
# 查看ZK状态
/opt/zookeeper-3.9.1/bin/zkServer.sh status
# 本次我们配置了三个DN节点,会出现一个leader和两个follower。输入jps,会显示启动进程:QuorumPeerMain
2、启动全部机器的 journalnode 服务 (zzy01,zzy02,zzy03)
进入/opt/hadoop/server/hadoop-3.2.4/安装目录下
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-AALgmlMW-1715240920844)]
[外链图片转存中…(img-Zdl1MGvc-1715240920845)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!