版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LW_GHY/article/details/87862903
说明:本文以HDFS High Availability Using the Quorum Journal Manager模式搭建hadoop3.2.0集群。
环境
- CentOS7、jdk1.8.0_181、zookeeper3.4.13、hadoop3.2.0
- 虚拟机安装CentOS7三台,如下:
hostname | IP |
storm | 192.168.56.200 |
storm1 | 192.168.56.201 |
storm2 | 192.168.56.202 |
注意:安装完成后关闭防火墙,执行如下命令:
systemctl disable firewalld.service systemctl stop firewalld.service systemctl status firewalld.service
- 安装jdk,省略安装步骤。
- 三台虚拟机配置免密登录,省略配置过程。
配置免密登录可以使用如下命令:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
搭建zookeeper集群
- zookeeper下载地址:https://archive.apache.org/dist/zookeeper/
- 上传到虚拟机,解压后修改conf/zoo.cfg文件,配置如下:
tickTime=3000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-3.4.13/data #此目录自由定义
clientPort=2181
server.1=storm:2888:3888
server.2=storm1:2888:3888
server.3=storm2:2888:3888
在dataDir定义的目录下创建文件myid,把虚拟机各自对应的id存储到myid,即上面的server.id,每台虚拟机只存储自己的id值即可。
启动zookeeper:bin/zkServer.sh start,在执行脚本的位置会生成一个日志文件zookeeper.out。
搭建hadoop
- 下载hadoop3.2.0地址:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz
- 修改../hadoop-3.2.0/etc/hadoop下的配置文件:
- hdfs-site.xml文件配置如下:
<configuration>
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2, nn3</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>storm:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>storm1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn3</name>
<value>storm2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>storm:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>storm1:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn3</name>
<value>storm2:9870</value>
</property>
<property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://storm:8485;storm1:8485;storm2: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</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/dfs/jn/</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>67108864</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- core-site.xml文件配置如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>storm:2181,storm1:2181,storm2:2181</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
- yarn-site.xml文件配置如下:
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>mycluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>storm</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>storm1</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>storm:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>storm1:8088</value>
</property>
<property>
<name>hadoop.zk.address</name>
<value>storm:2181,storm1:2181,storm2:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- mapred-site.xml文件配置如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
workers文件件配置如下:
storm
storm1
storm2
- hadoop-env.sh文件配置如下:
export JAVA_HOME=添加自己的JAVA_HOME
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
初始化与启动
三台虚拟机所有配置完成后,依次执行如下命令:
-> ../bin/hdfs --daemon start journalnode # 三台虚拟机都执行该命令
执行完成后会在hadoop根目录下生成logs目录,查看执行日志
-> ../bin/hdfs namenode -format # 在其中一台namenode虚拟机执行即可
执行完成后,在core-site.xml配置文件中hadoop.tmp.dir配置的目录会生成,把生成的目录复制到其他的namenode节点配置的位置。
-> ../bin/hdfs zkfc -formatZK # 在其中一台namenode虚拟机执行即可
执行完成后,将在ZooKeeper中创建一个znode,自动故障转移系统存储数据。
-> ../sbin/start-dfs.sh
启动HDFS
-> ../sbin/start-yarn.sh
启动yarn