Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。
测试环境
系统环境:RHEL6.5、selinux and iptables is disabled
Hadoop、jdk、zookeeper 程序使用 nfs 共享同步配置文件
软件版本:hadoop-2.7.3.tar.gz
zookeeper-3.4.9.tar.gz
jdk-7u79-linux-x64.tar.gz
nfs-utils
hadoop下载地址:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
zookeeper下载地址:http://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
nfs-utils直接使用yum源安装
安装jdk
tar zxf jdk-7u79-linux-x64.tar.gz
ln -s jdk1.7.0_79/ jdk
vim ~/.bash_profile ##添加环境变量到PATH的后面,和前面的用":"隔开
PATH=$PATH:$HOME/bin:/root/jdk/bin
source ~/.bash_profile
安装配置hadoop
tar zxf hadoop-2.7.3.tar.gz
ln -s hadoop-2.7.3 hadoop
cd hadoop
ps:hadoop和jdk的版本需要匹配,本文的jdk版本并不支持hadoop-2.7.4,我踩过的坑,大家就不要踩了!
HDFS高可用
配置 core-site.xml 文件
[hadoop@server1 hadoop]$ vim etc/hadoop/core-site.xml
<!-- 指定 hdfs 的 namenode 为 masters (名称可自定义)-->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://masters</value>
</property>
<!-- 指定 zookeeper 集群主机地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>172.25.21.2:2181,172.25.21.3:2181,172.25.21.4:2181</value>
</property>
</configuration>
配置 hdfs-site.xml 文件
vim etc/hadoop/hdfs-site.xml
<!-- 指定 hdfs 的 nameservices 为 masters,和 core-site.xml 文件中的设置保持一致 -->
<configuration>
<property>
<name>dfs.nameservices</name>
<value>masters</value>
</property>
<!-- masters 下面有两个 namenode 节点,分别是 h1 和 h2 (名称可自定义)-->
<property>
<name>dfs.ha.namenodes.masters</name>
<value>h1,h2</value>
</property>
<!-- 指定 h1 节点的 rpc 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.masters.h1</name>
<value>172.25.21.1:9000</value>
</property>
<!-- 指定 h1 节点的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.masters.h1</name>
<value>172.25.21.1:50070</value>
</property>
<!-- 指定 h2 节点的 rpc 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.masters.h2</name>
<value>172.25.21.5:9000</value>
</property>
<!-- 指定 h2 节点的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.masters.h2</name>
<value>172.25.21.5:50070</value>
</property>