Hadoop初识和安装
1 Hadoop初识
1.1 hadoop历史
2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System,google公司为了存储海量搜索数据而设计的专用文件系统。
2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为NDFS。
2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行分析运算。
2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。
2006年,Yahoo雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为Hadoop,Yahoo开建了一个独立的团队给Goug Cutting专门研究发展Hadoop。
1.2 hadoop简介
Hadoop实现了一个分布式文件系统(HadoopDistributed File System),简称HDFS。
1.3 hadoop特点
HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
2 hadoop下载
2.1 hadoop的下载地址
镜像地址http://www.apache.org/dyn/closer.cgi/hadoop/common
2.2 打开hadoop镜像地址
我们选择清华大学的网址:
http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common
网页如下:
稳定版本1
下载稳定版本1如图:
2.2 安装准备
2.2.1 准备Linux操作系统
本人安装的操作系统是ubuntu-16.04-desktop-i386,你也可以选择其他的Linux发行版本安装。
2.2.2 安装依赖
安装ssh
sudoapt-get install ssh
sudoapt-get install rsync
由于hadoop使用ssh协议来管理远程守护进程,因此还需要配置免密码登录,对于单极为分布式使用以下命令进行操作:
ssh-keygen –t rsa –P ‘’ –f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
2.2.3 jdk安装和环境变量配置
下载jdk1.6.x以上版本,本人下载的是jdk-7u80-linux-i586.tar.gz。
2.2.3.1 解压jdk-7u80-linux-i586.tar.gz
tar –zxvf jdk-7u80-linux-i586.tar.gz
2.2.3.2 配置环境变量
在操作系统用户目录下的 .bashrc 文件末尾增加
export JAVA_HOME=/usr/bin/develop/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:$PATH
exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
2.2.3.3 测试jdk环境变量安装
2.3 hadoop安装和配置
2.3.1 解压hadoop-1.2.1.tar.gz
tar –zxvf hadoop-1.2.1.tar.gz
2.3.2 配置环境变量
export HADOOP_HOME=/usr/bin/develop/hadoop-2.7.3
export HADOOP_HOME_WARN_SUPPRESS=1
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
注释:HADOOP_HOME_WARN_SUPPRESS是去掉警告的。
例如:Warning: $HADOOP_HOME is deprecated
2.3.3 配置core-site.xml
这个配置是hadoop的核心配置,至少需要配置HDFS的地址及端口号,这里使用以下配置方法:
fs.default.name用于指定NameNode的IP地址和端口号,localhost就是HDFS NameNode的地址,9000是HDFS的NameNode RPC交互端口。
2.3.4 配置hdfs-site.xml
这里主要配置HDFS的相关属性和参数:
dfs.replication用于指定HDFS中每个Block块被复制的次数,起到数据冗余备份的作用。
在典型的生产系统中,这个数常被设置为3,这里是伪分布式,只有一个节点,因此设置为1。dfs.name.dir用配置HDFS的NameNode的元数据,以逗号隔开,HDFS会把元数据冗余复制到这些目录下。dfs.data.dir用于配置HDFS的DataNode的数据目录,以逗号隔开,HDFS会把这些数据存储到这些目录下。这两个配置都在tmp目录下,建议用户在配置时使用自己创建的目录即可。
2.3.5 配置map-site.xml
配置mapred-site.xml的代码:
mapred.job.tracker是Mapreduce Jobtracker的IP地址及端口号,localhost就是Mapreduce Jobtracker的地址,9001是Mapreduce Jobtracker RPC交互端口。
2.3.6 配置hadoop-env.sh
hadoop-env.sh用于配置集群特有的变量值,这里至少需要JAVA_HOME环境变量
3 hadoop启动与停止
3.1 格式化HDFS分布式文件系统
如下图:
3.2 启动hadoop
如下图:
在执行start-all.sh启动命令后,hadoop首先启动了NameNode的守护进程,紧接着是DataNode和secondaryNameNode守护进程,然后是Jobtracker和TaskTracker守护进程。
jps命令可以看到伪分布式下启动的所有守护进程。
NameNode、DataNode和SecondaryNode是HDFS的三个守护进程。
Jobtracker和TaskTracker是Mapreduce的守护进程。
通过hadoopNameNode和JobTracker的web接口来查看集群是否启动成功。
NameNode为http://localhost:50070/
如下图:
从图中可以看到hadoop集群的配置容量、使用情况及节点是否正常等集群信息,也可以直接在web界面上浏览HDFS的内容以及日志文件。
JobTracker为 http://localhost:50030/
如下图:
从图中可以看到Mapreduce的相关情况,包括集群Map和Reduce的槽位数及最大容量,以及提交的作业数。Hadoop Mapreduce默认使用FIFO调度器,因此默认有一个default队列,用户提价的全部作业都会被提交到default队列并使用FIFO调度器调度运行。
3.3 停止hadoop
命令:stop-all.sh
如下图:
参考链接:
http://baike.baidu.com/link?url=k5UBL0furMUHc7IHP0QW-Y03B3iBWg8jTVmcXJSHFfpS7FLKukHJ4ez0j-OhSBTv9u1XhIdv2sWEucur9mdZZq
参考书籍:
[1]翟周伟.Hadoop核心技术[M].机械工业出版社.