用别人的东西好用,自己配的时候,就是坑,这篇博客,记录自己配置三台虚拟机(ha机制,zookeeper和hive)时躺的坑;首先交代一下,虚拟机使用的ubuntu14的lts版本,真心觉得还是centos好用,不会有很多的坑,但是我的台式机配置三台centos,实在没法跑起来,所以就放弃了,偶尔发现有之前大神调教好的ubuntu虚拟机,加上本人本身用ubuntu比较多,果断选择,不负我所望,速度也还可以。
ubuntu14-lts,hadoop-2.6.0,zookeeper使用的是3.4.5版本;配置虚拟机hadoop1,hadoop2,hadoop3。先配置虚拟机静态ip,这个过程我就不放了,交代一下(nat桥接,配置ip和静态网关),我的hadoop1(192.168.1.160),hadoop2(192.168.1.161),hadoop(192.168.1.162)。直接配置hadoop;
1.首先下载hadoop-2.6.0.tar.gz,千万注意,首先想好你想以那种身份来运行hadoop集群,(一旦确定后就不要改了,linux不得不说身份管理特别严格,如果不同身份配置,会有各种问题,因为这个问题,我这几天反复配置了数遍hadoop,之前师兄有句话,一切liunx运行问题,皆可以转化为权限,不无道理),这里选的是非root用户,home/fuleying
tar -zxvf hadoop-2.6.0.tar.gz
2.解压后,先改动hadoop-env.sh(这个配置hadoop的java运行环境)
export JAVA_HOME=/usr/lib/java/jdk1.8.0_45
3.然后分别改动core-site.xml(hadoop的核心配置文件)、hdfs-site.xml(设定hdfs的ns和namenode)、mapred-site.xml(设置MapReduce的运行机制)、yarn-site.xml(yarn运行机制)
①.core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/app/hadoop-2.6.0/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
</configuration>
②.hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop1:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop1:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop2:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop2:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/fuleying/hadoop/app/hadoop-2.6.0/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</n