三台机器:mini1,mini2,mini3
zookeeper的配置
1.解压安装zookeeper
2.在/etc/profile文件中配置ZK_HOME,路径为zookeeper解压地址
2.去zookeeper目录下的conf目录下,把xx.xx.cfg改名为 zoo.cfg
3.配置zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zkdata
clientPort=2181
server.1=mini1:2888:3888
server.2=mini2:2888:3888
server.3=mini3:2888:3888
去/home/zkdata(上面自己设置的目录)
vi myid 写你的序号(上面文件中配置的)
测试zookeeper
zkServer.sh start
jps查看进程
Hadoop的配置
1.解压hadoop到某个目录
2.在环境变量中加入HADOOP_HOME
3.配置hadoop相关配置文件: cd ${HADOOP_HOME}/etc/hadoop/
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--指定hdfs的命名空间-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://qf</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hahadoopdata/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--指定zk的集群地址,用来协调namenode服务-->
<property>
<name>ha.zookeeper.quorum</name>
<value>mini1:2181,mini2:2181,mini3:2181</value>
</property>
<property>
<name>ipc.client.connect.max.retries</name>
<value>100</value>
</property>
<property>
<name>ipc.client.connect.retry.interval</name>
<value>10000</value>
</property>
</configuration>
把 hadoop-env.sh文件中的 JAVA_HOME改成自己的路径
配置 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hahadoopdata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hahadoopdata/dfs/data</value>
</property>
<!--指定hdfs的虚拟服务名-->
<property>
<name>dfs.nameservices</name>
<value>qf</value>
</property>
<!--指定hdfs的虚拟服务名下的namenode-->
<property>
<name>dfs.ha.namenodes.qf</name>
<value>nn1,nn2</value>
</property>
<!--指定namenode的内部通信地址-->
<property>
<name>dfs.namenode.rpc-address.qf.nn1</name>
<value>mini1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.qf.nn2</name>
<value>mini2:9000</value>
</property>
<!--指定namenode的web ui通信地址-->
<property>
<name>dfs.namenode.http-address.qf.nn1</name>
<value>mini1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.qf.nn2</name>
<value>mini2:50070</value>
</property>
<!--指定journalnode数据共享目录-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://mini1:8485;mini2:8485;mini3:8485/qf</value>
</property>
<!--存放journalnode本地存放目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hahadoopdata/journal/data</value>
</property>
<!--开启namenode失败是否自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--指定namanode失败进行自动切换的主类-->
<property>
<name>dfs.client.failover.proxy.provider.qf</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--指定脑裂时,采用某种方式杀死期中一个-->
<!--防止多个namenode,同active(脑裂)-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>stj</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>mini1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>mini2</value>
</property>
<!-- 分别指定RM的网络通信地址 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>mini1:8088</value>
</property>
<!-- 分别指定RM的网络通信地址 -->
<property>
<name>yarn.resourcemanager.webapp.addressrm2</name>
<value>mini2:8088</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>mini1:2181,mini2:2181,mini3:2181</value>
</property>
</configuration>
配置 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置slaves
mini1
mini2
mini3
配置好一台之后,用scp命令传到另外两台。
第一次的启动顺序
启动zk
zkServer.sh start
jps查看
2674 Jps
2647 QuorumPeerMain
启动journalnode服务
hadoop-daemon.sh start journalnode
全部的机器
jps查看
2739 JournalNode
2788 Jps
2647 QuorumPeerMain
挑选两个namenode之中的一台来格式化
hdfs namenode -format
然后启动刚刚格式化完成的namenode
hadoop-daemonsh start namenode
在另一台namenode的机子上拉取元数据
hdfs namenode -bootstrapStandby
格式化zkfc(在namenode节点)
hdfs zkfc -formatZK
启动hdfs
start-dfs.sh
查看50070端口