共计 9911 个字符,预计需要花费 25 分钟才能阅读完成。
前言:
Hadoop 简介
Hadoop 是一个分布式系统基础架构,由 Apache 基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop 是一个可以更容易开发和运行处理大规模数据的软件平台。Hadoop 实现了一个分布式文件系统(HadoopDistributedFileSystem),简称 HDFS。HDFS 有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS 放宽了(relax)POSIX 的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。
谈到 Hadoop 就不得不提到 Lucene 和 Nutch。首先,Lucene 并不是一个应用程序,而是提供了一个纯 Java 的高性能全文索引引擎工具包,它可以方便的嵌入到各种实际应用中实现全文搜索 / 索引功能。Nutch 是一个应用程序,是一个以 Lucene 为基础实现的搜索引擎应用,Lucene 为 Nutch 提供了文本搜索和索引的 API,Nutch 不光有搜索的功能,还有数据抓取的功能。在 nutch0.8.0 版本之前,Hadoop 还属于 Nutch 的一部分,而从 nutch0.8.0 开始,将其中实现的 NDFS 和 MapReduce 剥离出来成立一个新的开源项目,这就是 Hadoop,而 nutch0.8.0 版本较之以前的 Nutch 在架构上有了根本性的变化,那就是完全构建在 Hadoop 的基础之上了。在 Hadoop 中实现了 Google 的 GFS 和 MapReduce 算法,使 Hadoop 成为了一个分布式的计算平台。其实,Hadoop 并不仅仅是一个用于存储的分布式文件系统,而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的框架。
Hadoop 包含两个部分:
1、HDFS
Hadoop 简介中的 HDFS。HDFS 即 HadoopDistributedFileSystem(Hadoop 分布式文件系统)HDFS 具有高容错性,并且可以被部署在低价的硬件设备之上。HDFS 很适合那些有大数据集的应用,并且提供了对数据读写的高吞吐率。HDFS 是一个 master/slave 的结构,就通常的部署来说,在 master 上只运行一个 Namenode,而在每一个 slave 上运行一个 Datanode。HDFS 支持传统的层次文件组织结构,同现有的一些文件系统在操作上很类似,比如你可以创建和删除一个文件,把一个文件从一个目录移到另一个目录,重命名等等操作。Namenode 管理着整个分布式文件系统,对文件系统的操作(如建立、删除文件和文件夹)都是通过 Namenode 来控制。
HDFS 的结构图中可以看出,Namenode,Datanode,Client 之间的通信都是建立在 TCP/IP 的基础之上的。当 Client 要执行一个写入的操作的时候,命令不是马上就发送到 Namenode,Client 首先在本机上临时文件夹中缓存这些数据,当临时文件夹中的数据块达到了设定的 Block 的值(默认是 64M)时,Client 便会通知 Namenode,Namenode 便响应 Client 的 RPC 请求,将文件名插入文件系统层次中并且在 Datanode 中找到一块存放该数据的 block,同时将该 Datanode 及对应的数据块信息告诉 Client,Cliet 便这些本地临时文件夹中的数据块写入指定的数据节点。HDFS 采取了副本策略,其目的是为了提高系统的可靠性,可用性。HDFS 的副本放置策略是三个副本,一个放在本节点上,一个放在同一机架中的另一个节点上,还有一个副本放在另一个不同的机架中的一个节点上。当前版本的 hadoop0.12.0 中还没有实现,但是正在进行中,相信不久就可以出来了。
2、MapReduce 的实现
Hadoop 简介中 MapReduce 的实现。MapReduce 是 Google 的一项重要技术,它是一个编程模型,用以进行大数据量的计算。对于大数据量的计算,通常采用的处理手法就是并行计算。至少现阶段而言,对许多开发人员来说,并行计算还是一个比较遥远的东西。MapReduce 就是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用。MapReduce 的名字源于这个模型中的两项核心操作:Map 和 Reduce。也许熟悉 FunctionalProgramming(函数式编程)的人见到这两个词会倍感亲切。简单的说来,Map 是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对 [1,2,3,4] 进行乘 2 的映射就变成了 [2,4,6,8]。Reduce 是对一组数据进行归约,这个归约的规则由一个函数指定,比如对[1,2,3,4] 进行求和的归约得到结果是 10,而对它进行求积的归约结果是 24。
安装 Hadoop 集群之前我们得先检验系统是否安装了如下的必备软件:
rpm -qa ssh rsync
如有未安装的请参考 http://www.linuxidc.com/Linux/2013-08/88910.htm 配置 yum 仓库
yum install rsync ssh
————————————– 分割线 ————————————–
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
————————————– 分割线 ————————————–
1、更改本机主机名:master 与 3 个 slave 都需要更改
master:
vi /etc/hostname
10.0.0.10 master
slave1
vi /etc/hostname
10.0.0.11 slave1
slave2
vi /etc/hostname
10.0.0.12 slave2
slave3
vi /etc/hostname
10.0.0.13 slave3
2、更改 hosts 信息:可以让 master 与 slave 之间互相解析
master
vi /etc/hosts
10.0.0.10 master
10.0.0.11 slave1
10.0.0.12 slave2
10.0.0.13 slave3
每个 slave 上都要配置 master 的信息
vi /etc/hosts
10.0.0.10 master
3、新建 hadoop 用户
Hadoop 要求所有机器上 hadoop 的部署目录结构要相同,并且都有一个相同的用户名的帐
户,所以需要每台机器创建一个同名的用户。
在这 4 台机器上建 hadoop 用户,密码:hadoop,用户主目录 /home/hadoop/。
useradd hadoop
passwd hadoop
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-07/104101p2.htm
4、SSH 设置
Hadoop 需要 master 与 3 个 slave 之间通过 ssh 无密钥方式互相访问
master:
su – hadoop
mkdir .ssh
chmod 755 .ssh/
ls -la
cd .ssh/
ssh-keygen -t rsa
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
chmod 600 authorized_keys
scp -r /home/hadoop/.ssh/authorized_keys 10.0.0.11:/home/hadoop/.ssh/
slave1
mkdir .ssh
chmod 755 .ssh/
cd .ssh/
chmod 600 authorized_keys
ssh-keygen -t rsa
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
scp -r /home/hadoop/.ssh/authorized_keys 10.0.0.10:/home/hadoop/.ssh/
master
scp -r /home/hadoop/.ssh/authorized_keys 10.0.0.12:/home/hadoop/.ssh/
slave2
mkdir .ssh
chmod 755 .ssh/
cd .ssh/
chmod 600 authorized_keys
ssh-keygen -t rsa
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
scp -r /home/hadoop/.ssh/authorized_keys 10.0.0.10:/home/hadoop/.ssh/
master
scp -r /home/hadoop/.ssh/authorized_keys 10.0.0.13:/home/hadoop/.ssh/
slave3
mkdir .ssh
chmod 755 .ssh/
cd .ssh/
chmod 600 authorized_keys
ssh-keygen -t rsa
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
scp -r /home/hadoop/.ssh/authorized_keys 10.0.0.10:/home/hadoop/.ssh/
5、jdk 的安装及配置
用 root 操作
/usr/java/jdk1.6.0_21/lib/
# chmod +x jdk-6u24-linux-x64.bin(以 64 位操作系统为例)
#./jdk-6u24-linux-x64.bin
会出现一个 jdk-6u24-linux-x64.rpm 包
rpm -ivh jdk-6u24-linux-x64.rpm
jdk 的安装到这儿就结束了。
下面咱们配置 java 跟 hadoop 的环境变量
vi /etc/profile 到最下面添加如下内容:
export JAVA_HOME=/usr/java/jdk1.6.0_21
export HADOOP_HOME=/home/hadoop/hadoop-0.21.0
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
6、安装 hadoop (注:都用 hadoop 用户操作不然后面启动时会有些报错)
将 hadoop-0.20.2.tar 文件下载到 /home/hadoop 目录下
tar –zxvf hadoop-0.20.2.tar.gz
cd hadoop-0.20.2/conf
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_21 将注释去掉并更改 JAVA_HOME 的路径
vi /home/hadoop/hadoop-0.21.0/conf/masters
10.0.0.10 maste
vi /home/hadoop/hadoop-0.21.0/conf/slaves
10.0.0.11 slave1
10.0.0.12 slave2
10.0.0.13 slave3
vi /home/hadoop/hadoop-0.21.0/conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://10.0.0.10:9000</value>
</property>
</configuration>
vi /home/hadoop/hadoop-0.21.0/conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop/data</value>
</property>
</configuration>
vi /home/hadoop/hadoop-0.21.0/conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>10.0.0.10:9001</value>
</property>
</configuration>
基本配置已经配好了下面咱们把在 master 上配置好的 hadoop 文件发送给每个 slave
scp –r /home/hadoop/hadoop-0.20.2 hadoop@10.0.0.11:/home/hadoop
scp –r /home/hadoop/hadoop-0.20.2 hadoop@10.0.0.12:/home/hadoop
scp –r /home/hadoop/hadoop-0.20.2 hadoop@10.0.0.13:/home/hadoop
传完之后咱们需要执行一下格式化的操作
cd /home/hadoop/hadoop-0.20.2
./bin/hadoop namedode –format
7、启动 hadoop
启动前建议关闭 iptables 防火墙及 selinux 安全组件等功能
service iptables stop
setenforce 0
bin 下有很多脚本文件是来控制的 hadoop 的
咱们可以用 ./bin/start-all.sh 来启动 hadoop
8、hadoop 的测试
我们用如下命令验证一下是否启动成功:
./bin/hadoop dfsadmin –report
如果没有错误提示或者出现文件列表,那么恭喜你,Hadoop 成功启动了,另外,我们可以
通过访问 http://10.0.0.10:50070 来查看 hdfs 的状态,访问 http://10.0.0.10:50030 来查看
map/reduce 的状态。
./bin/hadoop dfs –put input /input 将 input 放到 hadoop 根目录下 input 目录
./bin/hadoop jar hadoop-*examples.jar wordcount /input /output 数单词测试
./bin/hadoop jar hadoop*examples.jar randomwriter /rand 产生数据
./bin/hadoop jar hadoop*examples.jar sort /rand /rand_sort 排序测试
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
前言:
Hadoop 简介
Hadoop 是一个分布式系统基础架构,由 Apache 基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop 是一个可以更容易开发和运行处理大规模数据的软件平台。Hadoop 实现了一个分布式文件系统(HadoopDistributedFileSystem),简称 HDFS。HDFS 有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS 放宽了(relax)POSIX 的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。
谈到 Hadoop 就不得不提到 Lucene 和 Nutch。首先,Lucene 并不是一个应用程序,而是提供了一个纯 Java 的高性能全文索引引擎工具包,它可以方便的嵌入到各种实际应用中实现全文搜索 / 索引功能。Nutch 是一个应用程序,是一个以 Lucene 为基础实现的搜索引擎应用,Lucene 为 Nutch 提供了文本搜索和索引的 API,Nutch 不光有搜索的功能,还有数据抓取的功能。在 nutch0.8.0 版本之前,Hadoop 还属于 Nutch 的一部分,而从 nutch0.8.0 开始,将其中实现的 NDFS 和 MapReduce 剥离出来成立一个新的开源项目,这就是 Hadoop,而 nutch0.8.0 版本较之以前的 Nutch 在架构上有了根本性的变化,那就是完全构建在 Hadoop 的基础之上了。在 Hadoop 中实现了 Google 的 GFS 和 MapReduce 算法,使 Hadoop 成为了一个分布式的计算平台。其实,Hadoop 并不仅仅是一个用于存储的分布式文件系统,而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的框架。
Hadoop 包含两个部分:
1、HDFS
Hadoop 简介中的 HDFS。HDFS 即 HadoopDistributedFileSystem(Hadoop 分布式文件系统)HDFS 具有高容错性,并且可以被部署在低价的硬件设备之上。HDFS 很适合那些有大数据集的应用,并且提供了对数据读写的高吞吐率。HDFS 是一个 master/slave 的结构,就通常的部署来说,在 master 上只运行一个 Namenode,而在每一个 slave 上运行一个 Datanode。HDFS 支持传统的层次文件组织结构,同现有的一些文件系统在操作上很类似,比如你可以创建和删除一个文件,把一个文件从一个目录移到另一个目录,重命名等等操作。Namenode 管理着整个分布式文件系统,对文件系统的操作(如建立、删除文件和文件夹)都是通过 Namenode 来控制。
HDFS 的结构图中可以看出,Namenode,Datanode,Client 之间的通信都是建立在 TCP/IP 的基础之上的。当 Client 要执行一个写入的操作的时候,命令不是马上就发送到 Namenode,Client 首先在本机上临时文件夹中缓存这些数据,当临时文件夹中的数据块达到了设定的 Block 的值(默认是 64M)时,Client 便会通知 Namenode,Namenode 便响应 Client 的 RPC 请求,将文件名插入文件系统层次中并且在 Datanode 中找到一块存放该数据的 block,同时将该 Datanode 及对应的数据块信息告诉 Client,Cliet 便这些本地临时文件夹中的数据块写入指定的数据节点。HDFS 采取了副本策略,其目的是为了提高系统的可靠性,可用性。HDFS 的副本放置策略是三个副本,一个放在本节点上,一个放在同一机架中的另一个节点上,还有一个副本放在另一个不同的机架中的一个节点上。当前版本的 hadoop0.12.0 中还没有实现,但是正在进行中,相信不久就可以出来了。
2、MapReduce 的实现
Hadoop 简介中 MapReduce 的实现。MapReduce 是 Google 的一项重要技术,它是一个编程模型,用以进行大数据量的计算。对于大数据量的计算,通常采用的处理手法就是并行计算。至少现阶段而言,对许多开发人员来说,并行计算还是一个比较遥远的东西。MapReduce 就是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用。MapReduce 的名字源于这个模型中的两项核心操作:Map 和 Reduce。也许熟悉 FunctionalProgramming(函数式编程)的人见到这两个词会倍感亲切。简单的说来,Map 是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对 [1,2,3,4] 进行乘 2 的映射就变成了 [2,4,6,8]。Reduce 是对一组数据进行归约,这个归约的规则由一个函数指定,比如对[1,2,3,4] 进行求和的归约得到结果是 10,而对它进行求积的归约结果是 24。
安装 Hadoop 集群之前我们得先检验系统是否安装了如下的必备软件:
rpm -qa ssh rsync
如有未安装的请参考 http://www.linuxidc.com/Linux/2013-08/88910.htm 配置 yum 仓库
yum install rsync ssh
————————————– 分割线 ————————————–
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
————————————– 分割线 ————————————–
1、更改本机主机名:master 与 3 个 slave 都需要更改
master:
vi /etc/hostname
10.0.0.10 master
slave1
vi /etc/hostname
10.0.0.11 slave1
slave2
vi /etc/hostname
10.0.0.12 slave2
slave3
vi /etc/hostname
10.0.0.13 slave3
2、更改 hosts 信息:可以让 master 与 slave 之间互相解析
master
vi /etc/hosts
10.0.0.10 master
10.0.0.11 slave1
10.0.0.12 slave2
10.0.0.13 slave3
每个 slave 上都要配置 master 的信息
vi /etc/hosts
10.0.0.10 master
3、新建 hadoop 用户
Hadoop 要求所有机器上 hadoop 的部署目录结构要相同,并且都有一个相同的用户名的帐
户,所以需要每台机器创建一个同名的用户。
在这 4 台机器上建 hadoop 用户,密码:hadoop,用户主目录 /home/hadoop/。
useradd hadoop
passwd hadoop
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-07/104101p2.htm