一、Hadoop简介
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为海量的数据提供了计算。
Hadoop的优点
Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。
Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
Hadoop 还是可伸缩的,能够处理 PB 级数据。
此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。
hadoop大数据处理的意义
Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。
发展现状
Hadoop 设计之初的目标就定位于高可靠性、高可拓展性、高容错性和高效性,正是这些设计上与生俱来的优点,才使得Hadoop 一出现就受到众多大公司的青睐,同时也引起了研究界的普遍关注。到目前为止,Hadoop 技术在互联网领域已经得到了广泛的运用,例如,Yahoo 使用4 000 个节点的Hadoop集群来支持广告系统和Web 搜索的研究;Facebook 使用1 000 个节点的集群运行Hadoop,存储日志数据,支持其上的数据分析和机器学习;百度用Hadoop处理每周200TB 的数据,从而进行搜索日志分析和网页数据挖掘工作;中国移动研究院基于Hadoop 开发了"大云"(Big Cloud)系统,不但用于相关数据分析,还对外提供服务;淘宝的Hadoop 系统用于存储并处理电子商务交易的相关数据。国内的高校和科研院所基于Hadoop 在数据存储、资源管理、作业调度、性能优化、系统高可用性和安全性方面进行研究,相关研究成果多以开源形式贡献给Hadoop 社区。
二、试验环境
主机 | OS | IP地址 | 主要文件 |
master | centos-6.x | 192.168.10.1 | jdk hadoop |
slave1 | centos-6.x | 192.168.10.2 | |
slave2 | centos6.x | 192.168.10.3 |
1)在主机上配置ip、域名解析、主机名。
2)安装jdk和hadoop
tar zxf jdk...gz
mv jdk... /usr/local/java
tar zxf hadoop....gz
mv hadoop.../ /usr/local/hadoop
useradd hadoop
chown -R hadoop:hadoop /usr/local/hadoop
vim /etc/profile
export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile #重载
注:在slave1-2主机上坐同样步骤
3)master配置SSH密钥对
su - hadoop
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave1
ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave2
4)配置Hadoop
cd /usr/local/hadoop/etc/hadoop
vim hadoop-env.sh //添加java环境变量
export JAVA_HOME=/usr/local/java
vim core-site.xml //添加master主机名
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>hadoop 临时缓存目录 </description>
</property>
mv mapred-site.xml.tempalte mapred-site.xml
vim mapred-site.xml //设置映射磁盘
#连接jobtrack服务器的配置项,默认local、map数为1,reduce数为1。master是本机名
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
#本地计算机所使用的文件夹,可以配置多块硬盘用逗号分开
<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop/var</value>
</property>
vim hdfs-site.xml //设置文件存储复制份数
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop/name</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
vim masters //指定namenode的主机名
master
vim slaves //指定datanode的主机名
slave1
slave2
注:slave1-2上hadoop的配置和master配置一样
5)使用HDFS初始化master
hdfs namenode -format #格式化HDFS
start-all.sh #启动Hadoop
6)验证访问
通过浏览器查看NameNode,即master,访问http://192.168.10.1:50070,可以查看视图统计信息和HDFS存储信息等。如下图所示
7)hadoop基本命令
使用“hadoop fs”命令可以结合普通的文件管理命令实现很多操作,如查看、修改权限、统计、获取帮助、创建、删除、上传下载文件等,更多的用法可使用“hadoop fs -help”或“hadoop fs -usage”命令查看。