hadoop1.0安装部署文档

in 大数据 with 0 comment

实验环境:(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。

第一代 Hadoop 包含三个大版本0.20.x,0.21.x 和 0.22.x,其中,0.20.x 最后演化成1.0.x,变成了稳定版。

第二代 Hadoop 包含两个版本,分别是 0.23.x 和 2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含 HDFS Federation 和 YARN 两个系统,相比于 0.23.x,2.x 增加了NameNode HA 和Wire-compatibility 两个重大特性。

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生态圈主要的组件

Hadoop生态圈的基本组成部分是Hadoop分布式文件系统(HDFS)。HDFS是一种数据分布式保存机制,数据被保存在计算机集群上。数据写入一次,读取多次。HDFS为HBase等工具提供了基础。

Hadoop 的主要执行框架是MapReduce,它是一个分布式、并行处理的编程模型。MapReduce把任务分为map(映射)阶段和reduce(化简)。开发人员使用存储在HDFS中数据(可实现快速存储),编写Hadoop的MapReduce任务。由于MapReduce工作原理的特性, Hadoop能以并行的方式访问数据,从而实现快速访问数据。

HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据。HBase 使用Zookeeper进行管理,确保所有组件都正常运行。

用于Hadoop的分布式协调服务。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。

Hive类似于SQL高级语言,用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。

它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。其编译器将Pig Latin 翻译成MapReduce 程序序列。

是一个连接工具,用于在关系数据库、数据仓库和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
cd /usr/local/src

官方下载地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择对应的包下载

tar -zxvf jdk-8u45-linux-x64.tar.gz
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

[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
[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>
[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>
[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>
[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节点,避免反复重复的去配置,也防止出错。

启动并测试

[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多一个进程

[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 目录下,查看缺少的进程中,对应的出错日志。

Responses