实验环境:(OS:Centos6.5 x64位)
172.16.12.142 master
172.16.12.140 slave1
172.16.12.141 slave2
hadoop简介
Hadoop 是一个由Apache 基金会所开发的开源分布式系统基础架构。解决了大数据的存储和数据处理。适合处理非结构化数据,其中包括HDFS,MapReduce 基本组件。
hadoop版本
Apache Hadoop版本分为分为1.0和2.0两代版本,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop 称为Hadoop 2.0。
- hadoop1.0版本
第一代 Hadoop 包含三个大版本0.20.x,0.21.x 和 0.22.x,其中,0.20.x 最后演化成1.0.x,变成了稳定版。
- hadoop2.0版本
第二代 Hadoop 包含两个版本,分别是 0.23.x 和 2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含 HDFS Federation 和 YARN 两个系统,相比于 0.23.x,2.x 增加了NameNode HA 和Wire-compatibility 两个重大特性。
- CDH(开源第三方版本)
Hadoop 遵从Apache 开源协议,用户可以免费地任意使用和修改Hadoop,因此出现了相对比较有名的Cloudera公司的发行版CDH(Cloudera Distribution Hadoop)。
最新的两个版本分别为CDH3和CDH4。CDH3(在Apache Hadoop 0.20.2版本基础上演化而来的)和CDH4 在Apache Hadoop 2.0.0 版本基础上演化而来的),分别对应Apache 的Hadoop 1.0 和Hadoop 2.0。
hadoop生态圈主要的组件
- HDFS
Hadoop生态圈的基本组成部分是Hadoop分布式文件系统(HDFS)。HDFS是一种数据分布式保存机制,数据被保存在计算机集群上。数据写入一次,读取多次。HDFS为HBase等工具提供了基础。
- MapReduce
Hadoop 的主要执行框架是MapReduce,它是一个分布式、并行处理的编程模型。MapReduce把任务分为map(映射)阶段和reduce(化简)。开发人员使用存储在HDFS中数据(可实现快速存储),编写Hadoop的MapReduce任务。由于MapReduce工作原理的特性, Hadoop能以并行的方式访问数据,从而实现快速访问数据。
- Hbase
HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据。HBase 使用Zookeeper进行管理,确保所有组件都正常运行。
- ZooKeeper
用于Hadoop的分布式协调服务。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
- Hive
Hive类似于SQL高级语言,用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。
- Pig
它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。其编译器将Pig Latin 翻译成MapReduce 程序序列。
- Sqoop
是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。Sqoop利用数据库技术描述架构,进行数据的导入/导出;利用MapReduce实现并行化运行和容错技术。
安装hadoop
1.配置ssh免密互连并且绑定hosts
[root@master conf]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.12.142 master
172.16.12.140 slave1
172.16.12.141 slave2
[root@slave1 conf]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.12.142 master
172.16.12.140 slave1
172.16.12.141 slave2
[root@slave2 conf]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.12.142 master
172.16.12.140 slave1
172.16.12.141 slave2
写入各自公钥到本地ssh认证文件authorized_keys,此处只展示master端文件内容,slave内容就忽略了。
[root@master conf]# cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwuCOk218xyOIIzRGg4FxrXwoK4OfwTWKxGrgeefhZay1AfsowmjmV09XwgfeQZ5V/g4P1vcU9zlRqc7JYBEgASCWS31KtEr4cqET/nMdB2u8irDgIv3eZkOe2f63b11JYDzegirW7jEA40UPk7eKHb9mJjGYAxfrCtpO19/ur3L5ByUH16VDS4AlaHKH+G1QDNBtwNutlWAOuVg3udYttvu75uZtp1McickplTGUvr+j+hkbvFWw0IdH8ue0ZPgxCTG2loPQF7hD1mhOFpFggQuQ8zlbCXisJ6ZRkZNJ0rWeV3IhSrpsmJgYokYEW6CYRiqEGhYTdAMjtufxU539fQ== root@slave1
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmndAP1d43zeAI2ur6FvD7O1zZvz062Fw7qWcVcXsOI3SKecW4avOlynl9z9Fq707DlH4+zFYRxIVQg/bo+qSzBjrQ5kgfp1kJn3AtWNAY2Vyje2L/yUlpW3YCipRps295nZ0o59mP9g9v7c0EZ7V6+be7A91c9rc/JZSqTEbI1I6fll6Wb9n8D7SqIJjKCTbnXqc3wRsjfk9qpZDstysTulLYqv6F7cEdtecduHTSimWuVlVmRlOR0YnpRD2I9fS9mBHgER0pdAglwq9uDRm+0Mtjc1U3edHH4IL48cKHRddekQol3brRZohYbjfgGGlag2SPklmIaGEO4pZnv+dQ== root@slave2
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3CRO12BxPRm/ayDwNcw4ZWmOgheiA6+ETG5/2iOKP614WgcNx1ab5XhsMlU1/RSA66ETCT6tkV4339hZjFnE0Ixmfjm5qqJ7k2GiB0wfDmXEjxKAH3hIpEgNBJ3aVBkFNuGliNXidEGmU5kDhJhj0GRDR00BkgjreXrrVzj0qRm538B0i4MROJ7h/g2+c4HAopyOaElDe8FSrsaA3F6+oi9fJ/o9y/w4G0XQnMmtyoITQSgB9572iyT7iF9OiWMo0os0ZyhuuVElecIznirFrr5uHWOk4CJoR60rv4aYI7dBJEA+FO9AyOaRKpwMO1QCruk6fLubJh3tuzn3N5Fjcw== root@master
2.安装java环境参考此篇(master和2个slave都要操作)
- 卸载系统自带旧版本
java -version
rpm -qa | grep java #查看java包
yum remove java #或通过rpm方式卸载rpm -e --nodeps
- 下载并解压新版本java包
cd /usr/local/src
官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,选择对应的包下载
tar -zxvf jdk-8u45-linux-x64.tar.gz
- 配置jdk环境变量
vim /etc/profile ##末尾添加如下内容
export JAVA_HOME=/usr/local/src/jdk1.8.0_45
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:/usr/local/src/hadoop-1.2.1/bin
3.下载hadoop包(master和2个slave都要操作)
ftp下载地址,可以选择想要的版本
cd /usr/local/src
wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
tar -zxvf hadoop-1.2.1.tar.gz
cd hadoop-1.2.1 && mkdir /home/hadoop/hadoop-1.2.1/tmp
4.配置hadoop
主要包含这些文件:masters、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、hadoo-env.sh
- 修改masters及slaves配置文件
[root@master conf]# cd /usr/local/src/hadoop-1.2.1/conf
[root@master conf]# vim master
将'localhost'改为'master',然后保存退出
[root@master conf]# cat slaves
slave1
slave2
- 修改 core-site.xml 文件
<value></value>,标签之间填写对应的值,第一处填写刚才建立的临时文件目录路径,第二处为master端hdfs地址和端口
[root@master conf]# cat core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop-1.2.1/tmp</value> ##第一处
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://172.16.12.142:9000</value> ##第二处
</property>
</configuration>
- 修改mapred-site.xml文件
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://172.16.12.142:9001</value>
</property>
</configuration>
- 修改hdfs-site.xml文件
dfs.replication 一般设为3,如果只有1台或2台,修改成对应的值即可,此处我有2个slave节点,即设为2
[root@master conf]# cat hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
- 修改hadoo-env.sh文件
在#export JAVA_HOME下添加如下对应信息
[root@master conf]# cat hadoop-env.sh |grep JAVA_HOME
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/usr/local/src/jdk1.8.0_45
5.配置slaves节点
将master端的hadoop目录下conf目录如上几个配置文件也按同样操作配置下。
最快的方式是将master的hadoop整个目录推送到slave节点,避免反复重复的去配置,也防止出错。
启动并测试
- 启动进程
master端进入hadoop所在目录。并执行如下命令
[root@master bin]# pwd
/usr/local/src/hadoop-1.2.1/bin ##存放各种启动脚本及可执行命令
[root@master bin]# ./start-all.sh ##如果中间过程提示要判断是否,需要输入 yes。此处打印的输出信息忽略了
...
...
[root@master ~]# jps ##查看各服务进程
1479 SecondaryNameNode
1915 Jps
1546 JobTracker
1330 NameNode
此时再切换到slave端执行以下命令:
[root@slave1 conf]# jps
1341 TaskTracker
1266 DataNode
1522 Jps
[root@slave2 conf]# jps
1564 Jps
1238 DataNode
1313 TaskTracker
master会比salve多一个进程
- 测试系统
查看hdfs文件系统根目录文件信息:
[root@master bin]# ./hadoop fs -ls / #默认是HDFS系统下的根目录
Found 5 items
-rw-r--r-- 3 root supergroup 632207 2017-09-19 18:06 /The_Man_of_Property.txt
drwxr-xr-x - root supergroup 0 2017-09-19 19:09 /output
drwxr-xr-x - root supergroup 0 2017-09-20 23:52 /output_file_broadcast
-rw-r--r-- 3 root supergroup 856 2017-09-15 01:19 /passwd
drwxr-xr-x - root supergroup 0 2017-09-20 23:52 /usr
ending
至此hadoop系统搭建完成。否则,可以去/usr/local/src/hadoop-1.2.1/logs 目录下,查看缺少的进程中,对应的出错日志。
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 6, 2018 at 05:26 pm