A3--Hadoop部署
基础环境:Centos 7.9
一、版本信息
|
|
|
|---|---|
| JDK | 1.8 |
| Hadoop | 3.1.3 |
二、部署前准备:
1.执行init.sh(环境初始化脚本)2.执行java.sh(安装java环境)3.hosts主机名映射4.ssh免密登录(管理节点对数据节点)5.集群时间同步6.部署zookeeper集群 |
三、集群规划
|
主机
|
角色
|
|---|---|
| hadoop-01 | JN ZKFC NN RM |
| hadoop-02 | JN ZKFC NN RM |
| hadoop-03 | DN NM |
| hadoop-04 | DN NM |
架构图
四、HDFS HA部署
tar -zxvf hadoop-3.1.3.tar.gzcd hadoop-3.1.3 |
修改配置文件(配置文件路径 hadoop-3.1.3/etc/hadoop)
-
hadoop-env.sh
#文件最后添加exportJAVA_HOME=/java/jdk1.8.0_191exportHDFS_NAMENODE_USER=rootexportHDFS_DATANODE_USER=rootexportHDFS_JOURNALNODE_USER=rootexportHDFS_ZKFC_USER=rootexportHDFS_SECONDARYNAMENODE_USER=rootexportYARN_RESOURCEMANAGER_USER=rootexportYARN_NODEMANAGER_USER=rootexportHDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx1024m"exportHDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS -Xmx1024m" -
core-site.xml
<!-- 把多个 NameNode 的地址组装成一个集群mycluster --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- 指定 hadoop 数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/hadoop-3.1.3/data</value><description>A base for other temporary directories.</description></property><!-- 配置 HDFS 网页登录使用的静态用户 --><property><name>hadoop.http.staticuser.user</name><value>root</value></property><!-- 配置 开启回收站 --><property><name>fs.trash.interval</name><value>1440</value></property><!-- 指定zkfc要连接的zkServer地址--><property><name>ha.zookeeper.quorum</name><value>192.168.11.201:2181,192.168.11.202:2181,192.168.11.203:2181</value></property> -
hdfs-site.xml
<!-- NameNode 数据存储目录--><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/name</value></property><!-- DataNode 数据存储目录--><property><name>dfs.datanode.data.dir</name><value>file:///data1,file:///data2,file:///data3</value></property><!-- JournalNode 数据存储目录--><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.tmp.dir}/jn</value></property><!-- 完全分布式集群名称--><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- 集群中 NameNode 节点--><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- NameNode 的RPC通信地址--><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop-01:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop-02:8020</value></property><!-- NameNode 的HTTP通信地址--><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop-01:9870</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop-02:9870</value></property><!-- 指定 NameNode 元数据在JournalNode上存放的位置--><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop-01:8485;hadoop-02:8485/mycluster</value></property><!-- 访问代理类:client用于确定哪个NameNode为Active--><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></property><!-- 使用隔离机制时需要ssh秘钥登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 启用NameNode故障自动转移--><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property> -
workers
hadoop-03hadoop-04 -
启动JournalNode(所有节点)
hdfs --daemon start journalnode -
初始化ZKFC(一台节点)
hdfs zkfc -formatZK -
初始化NameNode(一台节点)
hdfs namenode -format -
启动初始化的NameNode
hdfs --daemon start namenode -
同步Namenode数据(其他NN节点)
hdfs namenode -bootstrapStandby -
停止NameNode服务
hdfs --daemon stop namenode -
停止JournalNode服务
hdfs --daemon stop journalnode -
启动hdfs集群
[root@hadoop-01 hadoop-3.1.3]# start-dfs.shStarting namenodes on [hadoop-01 hadoop-02]上一次登录:三 9月 7 17:06:31 CST 2022pts/0上Starting datanodes上一次登录:三 9月 7 17:07:36 CST 2022pts/0上Starting journal nodes [hadoop-02 hadoop-01]上一次登录:三 9月 7 17:07:38 CST 2022pts/0上Starting ZK Failover Controllers on NN hosts [hadoop-01 hadoop-02]上一次登录:三 9月 7 17:07:42 CST 2022pts/0上五、YARN HA部署
-
修改配置文件yarn-site.xml
<!-- Site specific YARN configuration properties --><!-- 指定 MR 走 shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!--启用 resourcemanager ha--><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!--声明 resourcemanager 的地址--><property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn</value></property><!--指定 resourcemanager的逻辑列表--><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- ===============rm1的配置================= --><!-- 指定rm1的主机名--><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop-01</value></property><!-- 指定rm1的web端地址--><property><name>yarn.resourcemanager.wepapp.address.rm1</name><value>hadoop-01:8088</value></property><!-- 指定rm1的内部通信地址--><property><name>yarn.resourcemanager.address.rm1</name><value>hadoop-01:8032</value></property><!-- 指定AM向rm1申请资源地址--><property><name>yarn.resourcemanager.scheduler.address.rm1</name><value>hadoop-01:8030</value></property><!-- 指定供NameNode连接的地址--><property><name>yarn.resourcemanager..resource-tracker.address.rm1</name><value>hadoop-01:8031</value></property><!-- ===============rm2配置================= --><!-- 指定rm2的主机名--><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop-02</value></property><!-- 指定rm2的web端地址--><property><name>yarn.resourcemanager.wepapp.address.rm2</name><value>hadoop-02:8088</value></property><!-- 指定rm2的内部通信地址--><property><name>yarn.resourcemanager.address.rm2</name><value>hadoop-02:8032</value></property><!-- 指定AM向rm2申请资源地址--><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>hadoop-02:8030</value></property><!-- 指定供NameNode连接的地址--><property><name>yarn.resourcemanager..resource-tracker.address.rm2</name><value>hadoop-02:8031</value></property><!--指定 zookeeper 集群的地址--><property><name>yarn.resourcemanager.zk-address</name><value>192.168.11.201:2181,192.168.11.202:2181,192.168.11.203:2181</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-aggregation-enable</name><value>true</value></property><!-- 设置日志聚集服务器地址 --><property><name>yarn.log.server.url</name></property><!-- 设置日志保留时间为 7 天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true --><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property> -
启动yarn集群
start-yarn.sh
-
本文来自博客园,作者:Jerry·,转载请注明原文链接:https://www.cnblogs.com/jerry-0910/p/17286131.html

浙公网安备 33010602011771号