Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
[1] Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
Hadoop集群有三种启动模式:
- 单机模式:默认情况下运行为一个单独机器上的独立Java进程,主要用于调试环境
- 伪分布模式:在单个机器上模拟成分布式多节点环境,每一个Hadoop守护进程都作为一个独立的Java进程运行
- 完全分布式模式:真实的生产环境,搭建在完全分布式的集群环境
- 注意:在此所运用的操作系统为linux-ubuntu
一、用户和用户组
首先添加hadoop用户和用户组,用户和用户组用来运行hadoop
$sudo adduser hadoop #添加用户组
$sudo usermod -G sudo hadoop #添加hadoop的sudo权限
二、 安装相关配置的包
Advanced Packaging Tool(apt)是Linux下的一款安装包管理工具,是一个客户/服务器系统。
工作原理编辑
APT是一个客户/服务器系统。在服务器上先复制所有DEB包(DEB是Debian软件包格式的文件扩展名),然后用APT的分析工具(genbasedir)根据每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在一个文件中,这个文件称为DEB 索引清单,APT服务器的DEB索引清单置于base文件夹内。一旦APT 服务器内的DEB有所变动,一定要使用genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单,从而可以获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。
当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压置放于/var/state/apt/lists/,而客户端使用apt-get install或apt-get upgrade命令的时候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已安装、未安装或是可以升级的。
$ sudo apt-get update #更新源
$ sudo apt-get install openssh-server rsync #安装ssh服务
$ sudo service ssh restart
$ sudo apt-get install openjdk-7-jdk #安装jdk
$ java -version
配置ssh免密码登录
$ su -l hadoop #切换到hadoop用户
配置ssh环境免密码登录。
$ ssh-keygen -t rsa -P ""
在/home/hadoop/.ssh目录下生成了id_rsa(私钥)和id_rsa.pub(公钥)两个文件,将公钥追加到authorized_keys中,该文件保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容。
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh localhost #验证登录本机是否还需要密码
三、下载并安装hadoop
$ wget http://labfile.oss.aliyuncs.com/hadoop-2.6.0.tar.gz #下载Hadoop
$ tar zxvf hadoop-2.6.0.tar.gz
$ sudo mv hadoop-2.6.0 /usr/local/hadoop
$ sudo chmod 774 /usr/local/Hadoop
配置Hadoop
Sudo apt-get install vim
$ vim /home/hadoop/.bashrc
在/home/hadoop/.bashrc文件末尾添加下列内容:
#HADOOP START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP END
保存退出后,激活新加的环境变量
$ source ~/.bashrc
四、测试单机模式
创建输入的数据,暂时采用/etc/protocols文件作为测试
$ cd /usr/local/hadoop
$ sudo mkdir input
$ sudo cp /etc/protocols ./input
执行Hadoop WordCount应用(词频统计)
$ bin/Hadoop jar
share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.0-sources.jar org.apache.hadoop.examples.WordCount input output
查看生成的单词统计数据
$ cat output/*