hadoop3.1.3 HA
  VwkplqVWfjso 2023年11月02日 51 0


实训一、安装java

步骤一、解压并重命名java

[root@master ~]#

tar -xzvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
mv /opt/module/jdk1.8.0_212 /opt/module/java

步骤二、配置全局环境变量

[root@master ~]#

vim /etc/profile

配置内容:

export JAVA_HOME=/opt/module/java
export PATH=$PATH:$JAVA_HOME/bin

加载环境变量

source /etc/profile

步骤三、测试java

[root@master ~]#

javac
java -version

步骤四、分发java文件和环境变量

[root@master ~]#

scp -r /opt/module/java root@slave1:/opt/module/java
scp -r /opt/module/java root@slave2:/opt/module/java
scp /etc/profile root@slave1:/etc/
scp /etc/profile root@slave2:/etc/

实训二、安装zookeeper集群

步骤一、解压并重命名为zookeeper

[root@master ~]#

tar -xzvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
mv /opt/module/apache-zookeeper-3.5.7-bin /opt/module/zookeeper

步骤二、配置用户环境变量

[root@master ~]#

vim /root/.bash_profile

配置内容:

export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

加载环境变量

source /root/.bash_profile

步骤三、配置zoo.cfg文件

[root@master ~]#

cp /opt/module/zookeeper/conf/zoo_sample.cfg /opt/module/zookeeper/conf/zoo.cfg 
vim $ZOOKEEPER_HOME/conf/zoo.cfg

配置内容:

# 配置zk数据文件路径
dataDir=/opt/module/zookeeper/data
# 配置zk日志文件
dataLogDir=/opt/module/zookeeper/logs
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

步骤四、配置myid文件

[root@master ~]#

mkdir -p  $ZOOKEEPER_HOME/{logs,data}
echo "1" > $ZOOKEEPER_HOME/data/myid

步骤五、分发文件

scp -r /opt/module/zookeeper root@slave1:/opt/module/ 
scp -r /opt/module/zookeeper root@slave2:/opt/module/
scp /root/.bash_profile slave1:/root/
scp /root/.bash_profile slave2:/root/

步骤六、修改其他节点myid文件

[root@slave1 ~]#

echo 2 >  $ZOOKEEPER_HOME/data/myid
source /root/.bash_profile

[root@slave2 ~]#

echo 3 >  $ZOOKEEPER_HOME/data/myid
source /root/.bash_profile

步骤七、启动zookeer集群

[root@master ~]#

zkServer.sh start

[root@slave1 ~]#

zkServer.sh start

[root@slave2 ~]#

zkServer.sh start

步骤八、查看jps进程

[root@master ~]#

jps

[root@slave1 ~]#

jps

[root@slave2 ~]#

jps

实训三、部署Hadoop HA

步骤一、解压并重命名

[root@master ~]#

tar -xzvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/ 
 mv /opt/module/hadoop-3.1.3 /opt/module/hadoop

步骤二、配置环境变量

[root@master ~]#

vim /root/.bash_profile

配置内容:

export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

加载环境变量

source /root/.bash_profile

步骤三、查看hadoop版本

[root@master ~]#

hadoop version

步骤四、配置hadoop-env.sh

[root@master ~]#

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

配置内容:

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export JAVA_HOME=/opt/module/java

步骤五、配置hdfs-site.xml

[root@master ~]#

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

配置内容:

<property>
  <!--nameservices逻辑名称-->
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<property>
  <!--nameservices服务中每个 NameNode 的唯一标识符-->
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2,nn3</value>
</property>
<property>
  <!--nn1 NameNode监听的完全限定的 RPC 地址-->
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>master:8020</value>
</property>
<property>
  <!--nn2 NameNode监听的完全限定的 RPC 地址-->
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>slave1:8020</value>
</property>
<property>
  <!--nn3 NameNode监听的完全限定的 RPC 地址-->
  <name>dfs.namenode.rpc-address.mycluster.nn3</name>
  <value>slave2:8020</value>
</property>
<property>
  <!--nn1 NameNode 监听的完全限定的 HTTP 地址-->
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>master:9870</value>
</property>
<property>
  <!--nn2 NameNode 监听的完全限定的 HTTP 地址-->
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>slave1:9870</value>
</property>
<property>
  <!--nn3 NameNode 监听的完全限定的 HTTP 地址-->
  <name>dfs.namenode.http-address.mycluster.nn3</name>
  <value>slave2:9870</value>
</property>
<property>
  <!--标识 NameNode 将在其中写入/读取编辑的 JN 组的 URI-->
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>
<property>
  <!--HDFS 客户端用来联系 Active NameNode 的 Java 类-->
  <name>dfs.client.failover.proxy.provider.mycluster</name>   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
  <!--一个脚本或 Java 类的列表,将在故障转移期间用于隔离 Active NameNode-->
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

<property>
  <!--SSH 到 Active NameNode 并终止进程-->
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>
<property>
  <!--SSH连接超时时长(毫秒)-->
  <name>dfs.ha.fencing.ssh.connect-timeout</name>
  <value>30000</value>
</property>
<property> 
  <!--开启自动故障转移-->
  <name>dfs.ha.automatic-failover.enabled</name> 
  <value>true</value> 
</property>
<property> 
  <!--配置zk集群-->
   <name>ha.zookeeper.quorum</name> 
   <value>master:2181,slave1:2181,slave2:2181</value> 
 </property>
<property>
  <!--hadoop的副本数量,默认为3-->
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
  <!--在本地文件系统所在的NameNode的存储空间和持续化处理日志-->
  <name>dfs.namenode.name.dir</name>
  <value>/opt/module/hadoop/dfs/name</value>
</property>
<property>
  <!--在本地文件系统所在的DataNode的存储空间和持续化处理日志-->
  <name>dfs.datanode.data.dir</name>
  <value>/opt/module/hadoop/dfs/data</value>
</property>
<property>
  <!--用于大型文件系统的 HDFS 块大小为 256MB。-->
  <name>dfs.blocksize</name>
  <value>268435456</value>
</property>
<property>
  <!--NameNode 服务器线程来处理来自大量DataNode 的 RPC-->
  <name>dfs.namenode.handler.count</name>
  <value>100</value>
</property>

步骤六、配置core-site.xml

[root@master ~]#

vim $HADOOP_HOME/etc/hadoop/core-site.xml

配置内容

<property>
  <!--hadoop临时文件路径-->
  <name>hadoop.tmp.dir</name>
  <value>/opt/module/hadoop/dfs/tmp</value>
</property>
<property>
  <!--Hadoop FS 客户端使用的默认路径-->
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>
<property>
<!--SequenceFiles 中使用的读/写缓冲区的大小。-->
  <name>io.file.buffer.size</name>
  <value>131072</value>
</property>
<property>
  <!--JournalNode 守护进程将存储其本地状态的路径-->
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/module/hadoop/journal/data</value>
</property>
<property>
  <!--hadoop的副本数量,默认为3-->
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
  <!--hadoop临时文件路径-->
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/src/hadoop/dfs/tmp</value>
</property>
<property>
  <!--配置允许访问的主机-->
  <name>hadoop.proxyuser.root.hosts</name>
  <value>*</value>
</property>
<property>
  <!--配置允许访问的用户组-->
  <name>hadoop.proxyuser.root.groups</name>
  <value>*</value>
</property>
<property>
  <!--配置允许访问的用户-->
  <name>hadoop.proxyuser.root.users</name>
  <value>*</value>
</property>

步骤七、配置yarn-site.xml

[root@master ~]#

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

配置内容

<property>
  <!--逗号分隔的服务列表-->
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <!--在资源管理器中分配给每个容器请求的最小内存限制。以 MB 为单位-->
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>1024</value>
</property>
<property>
  <!--在资源管理器中分配给每个容器请求的最大内存限制。以 MB 为单位-->
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>4096</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>
  <!--可以为容器分配的 vcore 数量,这不用于限制 YARN 容器使用的物理内核数。默认为8-->
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>5</value>
</property>
<property>
  <!--启用 RM HA-->
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>
<property>
  <!--标识集群。选举人使用它来确保 RM 不会接管另一个集群的活动。-->
  <name>yarn.resourcemanager.cluster-id</name>
  <value>RMcluster</value>
</property>
<property>
  <!--RM 的逻辑 ID 列表-->
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>
<property>
  <!--指定 RM逻辑id,rm1对应的主机名-->
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>master</value>
</property>
<property>
  <!--指定 RM逻辑id,rm2对应的主机名-->
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>slave1</value>
</property>
<property>
  <!--指定 RM逻辑id,rm1对应的web地址-->
  <name>yarn.resourcemanager.webapp.address.rm1</name>
  <value>master:8088</value>
</property>
<property>
  <!--指定 RM逻辑id,rm2对应的web地址-->
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>slave1:8088</value>
</property>
<property>
  <!--指定hadoop集群-->
  <name>hadoop.zk.address</name>
  <value>master:2181,slave1:2181,slave2:2181</value>
</property>

步骤八、配置mapred-site.xml

[root@master ~]#

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

配置内容

<property>
  <!--执行框架设置为 Hadoop YARN-->
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop</value>
</property>
<property>
  <!--map任务的资源限制-->
  <name>mapreduce.map.memory.mb</name>
  <value>2048</value>
</property>
<property>
  <!--map任务子jvm的堆大小-->
  <mame>mapreduce.map.java.opts</mame>
  <value>-Xmx1536M</value>
</property>
<property>
  <!--reduce任务的资源限制-->
  <name>mapreduce.reduce.memory.mb</name>
  <value>4096</value>
</property>
<property>
  <!--reduce任务子jvm的堆大小-->
  <mame>mapreduce.map.java.opts</mame>
  <value>-Xmx2560M</value>
</property>
<property>
  <!--MapReduce JobHistory 服务器主机:端口-->
  <name>mapreduce.jobhistory.address</name>
  <value>master:10020</value>
</property>
<property>
  <!--MapReduce JobHistory Server Web UI主机:端口-->
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>master:19888</value>
</property>
<property>
  <!--MapReduce 作业写入历史文件的目录-->
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>/mr-history/tmp</value>
</property>
<property>
  <!--历史文件由 MR JobHistory Server 管理的目录。-->
  <name>mapreduce.jobhistory.done-dir</name>
  <value>/mr-history/done</value>
</property>

步骤九、配置workers

[root@master ~]#

vim  $HADOOP_HOME/etc/hadoop/workers

配置内容

master
slave1
slave2

步骤十、分发文件

[root@master ~]#

scp -r /opt/module/hadoop/ root@slave1:/opt/module/
scp -r /opt/module/hadoop/ root@slave2:/opt/module/
scp /root/.bash_profile root@slave1:/root/
scp /root/.bash_profile root@slave2:/root/

步骤十一、分别启动journalnode

[root@master ~]#

hdfs --daemon start journalnode

[root@slave1 ~]#

source /root/.bash_profile
hdfs --daemon start journalnode

[root@slave2 ~]#

source /root/.bash_profile
hdfs --daemon start journalnode

步骤十二、格式化namenode

[root@master ~]#

hdfs namenode -format

步骤十三、格式化zkfc

[root@master ~]#

hdfs zkfc -formatZK

步骤十四、启动集群

[root@master ~]#

start-all.sh

[root@master ~]#

jps

[root@slave1 ~]#

jps

[root@slave2 ~]#

jps

步骤十五、备用namenode复制元数据目录

[root@slave1 ~]#

hdfs namenode -bootstrapStandby

[root@slave2 ~]#

hdfs namenode -bootstrapStandby

[root@slave1 ~]#

hdfs --daemon start  namenode
 jps

[root@slave2 ~]#

hdfs --daemon start  namenode
 jps

步骤十六、运行pi程序测试

[root@master ~]#

yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 10

步骤十七、查看所有namenode状态

[root@master ~]#

hdfs haadmin -getAllServiceState

步骤十八、重启master namenode

[root@master ~]#

hdfs --daemon start namenode
jps
hdfs haadmin -getServiceState nn1


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
VwkplqVWfjso