Hadoop是开源的分布式计算框架,它支持著名的MapReduce编程范式,是目前最流行的大数据处理框架。除了提供分布式存储服务HDFS和MapReduce的支持,Hadoop生态还整合了HBase、ZooKeeper、Hive等项目,在数据仓库、数据挖掘、人工智能等领域都有广阔的应用场景。
环境准备
为了搭建分布式Hadoop集群,我们需要至少一台Master节点和一台Slave节点,在UOS创建如下主机。
为了保证集群内主机网络互通,我们需要创建私有网络,保证所有节点都在此网络中。
搭建集群
我们以最新的Ubuntu 15.04为例,部署Hadoop 2.7.1集群模式。
第一步安装Oracle Java 7,注意Hadoop 2.7已经不支持Java 6了。
sudo apt-get purge -y openjdk*
add-apt-repository ppa:webupd8team/java
apt-get update -y
apt-get install -y oracle-java7-installer
然后修改.bashrc配置JAVA_HOME。
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
为了模拟线上环境,我们会创建hadoop用户。
sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop
sudo adduser hadoop sudo
安装Hadoop的过程非常简单,只需下载编译好的压缩包即可。
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable2/hadoop-2.7.1.tar.gz
tar xzvf ./hadoop-2.7.1.tar.gz
sudo mv hadoop-2.7.1 /usr/lib/hadoop
并且配置HADOOP_HOME。
export HADOOP_HOME=/usr/lib/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
修改配置
修改/etc/hosts。
192.168.0.2 hadoop-master
192.168.0.5 hadoop-slave
修改/usr/lib/hadoop/etc/hadoop/slaves。
hadoop-slave
修改/usr/lib/hadoop/etc/hadoop/core-site.xml。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/lib/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
修改/usr/lib/hadoop/etc/hadoop/hdfs-site.xml。
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-master:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/lib/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/lib/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
修改/usr/lib/hadoop/etc/hadoop/mapred-site.xml。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改/usr/lib/hadoop/etc/hadoop/yarn-site.xml。
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
启动服务
启动Hadoop服务命令非常简单,执行下面四行命令接口。
cd /usr/lib/hadoop/
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
可以通过下面的命令来测试,或者访问 http://master:8088/cluster
bin/hdfs dfs -mkdir -p /user/hadoop
bin/hdfs dfs -put etc/hadoop input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output ‘dfs[a-z.]+’
bin/hdfs dfs -cat output/*
总结
虚拟化和云计算让IT基础设施更加触手可得,借助IaaS平台就能在十分钟内搭建Hadoop集群,真正做到让大数据开发像家庭作业一样简单。
UOS致力于为企业和开发者提供高性能的云主机和云存储服务,在UOS搭建大数据服务,让您的数据发掘更大的价值。
关于作者:
陈迪豪,UnitedStack有云的基础架构工程师,目前专注于Docker、OpenStack社区。Docker监控管理工具Seagull项目作者,开源电子书《理解Linux进程》作者。