本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  。该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237

【注】该系列所使用到安装包、测试文件和代码可以在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs ,下载该PDF文件

、Hadoop介绍

1.1Hadoop简介

Apache Hadoop软件库是一个框架,允许在集群服务器上使用简单的编程模型对大数据集进行分布式处理。Hadoop被设计成能够从单台服务器扩展到数以千计的服务器,每台服务器都有本地的计算和存储资源。Hadoop的高可用性并不依赖硬件,其代码库自身就能在应用层侦测并处理硬件故障,因此能基于服务器集群提供高可用性的服务。

1.2Hadoop生态系统

经过多年的发展形成了Hadoop1.X生态系统,其结构如下图所示:

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

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

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

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

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

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

lSqoop是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。Sqoop利用数据库技术描述架构,进行数据的导入/导出;利用MapReduce实现并行化运行和容错技术。

lFlume提供了分布式、可靠、高效的服务,用于收集、汇总大数据,并将单台计算机的大量数据转移到HDFS。它基于一个简单而灵活的架构,并提供了数据流的流。它利用简单的可扩展的数据模型,将企业中多台计算机上的数据转移到Hadoop

1.3Apache版本衍化

Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0。第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x包含NameNode HA等新的重大特性。第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性。

、Hadoop1.X伪分布安装

Hadoop安装有如下三种方式

l单机模式:安装简单,几乎不用作任何配置,但仅限于调试用途;

个进程,模拟分布式运行的各个节点;

l完全分布式模式:正常的Hadoop集群,由多个各司其职的节点构成

由于实验环境的限制,本节课程将讲解伪分布模式安装,并在随后的课程中以该环境为基础进行其他组件部署实验。以下为伪分布式环境下在CentOS6中配置Hadoop-1.1.2,该配置可以作为其他Linux系统和其他版本的Hadoop部署参考。

2.1软硬件环境说明

所有节点均是CentOS系统,防火墙和SElinux禁用,所有节点上均创建了一个shiyanlou用户,并在系统根目录下创建/app目录,用于存放Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。

Hadoop搭建环境:

l  虚拟机操作系统: CentOS6.6  64位,单核,1G内存

l  JDK:1.7.0_55 64位

l  Hadoop:1.1.2

2.2环境搭建(实验楼虚拟机已设置,以下提供参考)

实验环境的虚拟机已经完成的安装环境的配置,其他环境部署时可以参考该章节进行环境搭建。

2.2.1配置本地环境

该部分对服务器的配置需要在服务器本地进行配置,配置完毕后需要重启服务器确认配置是否生效,特别是远程访问服务器需要设置固定IP地址。

2.2.1.1设置IP地址

1.  点击System-->Preferences-->Network Connections,如下图所示:

2.  修改或重建网络连接,设置该连接为手工方式,设置如下网络信息:

IP地址:    192.168.42.11

子网掩码: 255.255.255.0

网关:     192.168.42.1

DNS:     221.12.1.227 (需要根据所在地设置DNS服务器)

Domain:   221.12.33.227

注意:网关、DNS等根据所在网络实际情况进行设置,并设置连接方式为"Available to all users",否则通过远程连接时会在服务器重启后无法连接服务器

3.在命令行中,使用ifconfig命令查看设置IP地址信息,如果修改IP不生效,需要重启机器再进行设置(如果该机器在设置后需要通过远程访问,建议重启机器,确认机器IP是否生效)

2.2.1.2设置机器名

使用sudo vi /etc/sysconfig/network 打开配置文件,根据实际情况设置该服务器的机器名,新机器名在重启后生效

2.2.1.3设置Host映射文件

1.  设置IP地址与机器名的映射,设置信息如下:

sudo vi /etc/hosts

l 192.168.42.8 b393a04554e1 hadoop

2.使用如下命令对网络设置进行重启

sudo /etc/init.d/network restart

3.使用ping命令验证设置是否成功

2.2.2设置操作系统环境

2.2.2.1关闭防火墙

在Hadoop安装过程中需要关闭防火墙和SElinux,否则会出现异常

1.使用sudo service iptables status 查看防火墙状态,如下所示表示iptables已经开启

2.以root用户使用如下命令关闭iptables

chkconfig iptables off

2.2.2.2关闭SElinux

1.使用sudo getenforce命令查看是否关闭,如果显示Enforcing表示没有关闭

2. 修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled,执行该命令后重启机器

2.2.2.3JDK安装及配置

1.下载JDK1.7 64bit安装包

打开JDK1.7 64bit安装包下载链接为:

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

打开界面之后,先选中 Accept License Agreement ,然后下载 jdk-7u55-linux-x64.tar.gz,如下图所示:

2.创建/app目录,把该目录的所有者修改为shiyanlou

sudo mkdir /app

sudo chown -R shiyanlou:shiyanlou /app

3. 创建/app/lib目录,使用命令如下:

mkdir /app/lib

4.把下载的安装包解压并迁移到/app/lib目录下

cd /home/shiyanlou/install-pack

tar -zxf jdk-7u55-linux-x64.tar.gz

mv jdk1.7.0_55/ /app/lib

ll /app/lib

5.使用sudo vi /etc/profile命令打开配置文件,设置JDK路径

export JAVA_HOME=/app/lib/jdk1.7.0_55

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

6.编译并验证

source /etc/profile

java -version

2.2.2.4更新OpenSSL

CentOS自带的OpenSSL存在bug,如果不更新OpenSSL在Ambari部署过程会出现无法通过SSH连接节点,使用如下命令进行更新:

yum update openssl

2.2.2.5SSH无密码验证配置

1.使用sudo vi /etc/ssh/sshd_config打开sshd_config配置文件,开放三个配置,如下图所示:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

2.配置后重启服务

sudo service sshd restart

3.使用shiyanlou用户登录使用如下命令生成私钥和公钥;

ssh-keygen -t rsa

4.进入/home/shiyanlou/.ssh目录把公钥命名为authorized_keys,使用命令如下:

cp id_rsa.pub authorized_keys

5.使用如下设置authorized_keys读写权限

chmod 400 authorized_keys

6.测试ssh免密码登录是否生效

2.3  Hadoop变量配置

2.3.1解压并移动hadoop安装包

在Apache的归档目录中下载hadoop-1.1.2-bin.tar.gz安装包,也可以在/home/shiyanlou/install-pack目录中找到该安装包,解压该安装包并把该安装包复制到/app目录中

cd /home/shiyanlou/install-pack

tar -xzf hadoop-1.1.2-bin.tar.gz

mv hadoop-1.1.2 /app

2.3.2在hadoop-1.1.2目录下创建子目录

cd /app/hadoop-1.1.2

mkdir tmp

mkdir hdfs

mkdir hdfs/name

mkdir hdfs/data

ls

,否则DataNode会启动失败

2.3.3配置hadoop-env.sh

1.进入hadoop-1.1.2/conf目录,打开配置文件hadoop-env.sh

cd /app/hadoop-1.1.2/conf

vi hadoop-env.sh

2.加入配置内容,设置了hadoop中jdk和hadoop/bin路径

export JAVA_HOME=/app/lib/jdk1.7.0_55

export PATH=$PATH:/app/hadoop-1.1.2/bin

3.编译配置文件hadoop-env.sh并确认生效

source hadoop-env.sh

hadoop version

2.3.4配置core-site.xml

1.使用如下命令打开core-site.xml配置文件

cd /app/hadoop-1.1.2/conf

sudo vi core-site.xml

2.在配置文件中,按照如下内容进行配置

<configuration>

  <property>

    <name>fs.default.name</name>

     <value>hdfs://hadoop:9000</value>

  </property>

  <property>

    <name>hadoop.tmp.dir</name>

     <value>/app/hadoop-1.1.2/tmp</value>

  </property>

</configuration>

2.3.5配置hdfs-site.xml

1.使用如下命令打开hdfs-site.xml配置文件

cd /app/hadoop-1.1.2/conf

sudo vi hdfs-site.xml

2.在配置文件中,按照如下内容进行配置

<configuration>

  <property>

    <name>dfs.replication</name>

     <value>1</value>

  </property>

  <property>

    <name>dfs.name.dir</name>

     <value>/app/hadoop-1.1.2/hdfs/name</value>

  </property>

  <property>

    <name>dfs.data.dir</name>

     <value>/app/hadoop-1.1.2/hdfs/data</value>

  </property>

</configuration>

2.3.6配置mapred-site.xml

1.使用如下命令打开mapred-site.xml配置文件

cd /app/hadoop-1.1.2/conf

sudo vi mapred-site.xml

2.在配置文件中,按照如下内容进行配置

<configuration>

  <property>

    <name>mapred.job.tracker</name>

     <value>hadoop:9001</value>

  </property>

</configuration>

2.3.7配置masters和slaves文件

1.设子主节点

cd /app/hadoop-1.1.2/conf

vi masters

设置hadoop机器为master节点

2.设置从节点

cd /app/hadoop-1.1.2/conf

vi slaves

设置hadoop机器为slaves节点,即本身即是master也是slaves节点

2.3.8格式化namenode

在hadoop机器上使用如下命令进行格式化namenode

cd /app/hadoop-1.1.2/bin

./hadoop namenode -format

2.3.9启动hadoop

cd /app/hadoop-1.1.2/bin

./start-all.sh

2.3.10   用jps检验各后台进程是否成功启动

使用jps命令查看hadoop相关进程是否启动

这时我们发现少了一个DataNode进程,到$HADOOP_HOME/logs目下,使用cat hadoop-shiyanlou-datanode-5****.log(***表示所在机器名)查看日志文件,可以看到在日志中提示:Invalid directory in dfs.data.dir:Incorrect permission for /app/hadoop-1.1.2/hdfs/data, expected:rwxr-xr-x, while actual: rwxrwxr-x

sudo chmod 755 /app/hadoop-1.1.2/hdfs/data

重新启动hadoop集群,可以看到DataNode进程

Hadoop入门进阶课程1--Hadoop1.X伪分布式安装的更多相关文章

  1. 吴超老师课程--Hbase介绍和伪分布式安装

    1.HBase(NoSQL)的数据模型1.1 表(table),是存储管理数据的.1.2 行键(row key),类似于MySQL中的主键.     行键是HBase表天然自带的.1.3 列族(col ...

  2. Hadoop入门进阶课程13--Chukwa介绍与安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  3. Hadoop入门进阶课程12--Flume介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  4. Hadoop入门进阶课程11--Sqoop介绍、安装与操作

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  5. Hadoop入门进阶课程10--HBase介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  6. Hadoop入门进阶课程9--Mahout介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  7. Hadoop入门进阶课程8--Hive介绍和安装部署

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  8. Hadoop入门进阶课程7--Pig介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  9. Hadoop入门进阶课程6--MapReduce应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

随机推荐

  1. 用Swift GestureRecognizer 的几个注意点

    最近做了一些关于 GestureRecognizer 的工作 ,随笔记录一些需要注意的点: 1. PanGestureRecognizer (1)在使用时 注意在哪个view添加了 手势识别 self ...

  2. LINQ构建交叉表

    最近碰到客户的一个需求.使用交叉表来显示客户数据.也就是以同时以行头和列头交叉形式显示数据内容.同时要求即使有些列没有数据,也需要显示该列内容,并设置默认值. 说明: “交叉表”对象是一个网格,用来根 ...

  3. mysql使用笔记(四)

    一.选择合适的数据类型 1. CHAR vs VCHAR     char是固定长度的字符类型,而varchar是可变长度的字符类型.char(M)的数据列中,每个值都占用M个字节,如果某个长度小于M ...

  4. OD: Kernel Exploit - 2 Programming

    本节接前方,对 exploitme.sys 进行利用. exploitme.sys 存在任意地址写任意内容的内核漏洞,现在采用执行 Ring0 Shellcode 的方式进行利用. 获取 HalDis ...

  5. ItextSharp代码示例

    示例代码目录 示例代码0101. 5 示例代码0102. 7 示例代码0103. 9 示例代码0104. 11 示例代码0105. 13 示例代码0106. 15 示例代码0107. 17 示例代码0 ...

  6. Unity应用架构设计(11)——一个网络层的构建

    对于客户端应用程序,免不了和远程服务打交道.设计一个良好的『服务层』能帮我们规范和分离业务代码,提高生产效率.服务层最核心的模块一定是怎样发送请求,虽然Mono提供了很多C#网络请求类,诸如WebCl ...

  7. 通过SQL脚本导入数据到不同数据库避免重复导入三种方式

    前言 无论何种语言,一旦看见代码中有重复性的代码则想到封装来复用,在SQL同样如此,若我们没有界面来维护而且需要经常进行的操作,我们会写脚本避免下次又得重新写一遍,但是这其中就涉及到一个问题,这个问题 ...

  8. WebView之js调用Android类的方法传递数据

    1,具体的思路如下: 在android中写一个Activity,里面写一个webview,这个webview加载本地的一个html文件,显示这个网页,这个网页包括一个用户名和密码的输入框和两个按钮(只 ...

  9. get_k_data 接口文档 全新的免费行情数据接口

    get_k_data 接口文档 全新的免费行情数据接口 原创: Jimmy 挖地兔 2016-11-06 前言在tushareAPI里,曾经被用户喜欢和作为典范使用的API get_hist_data ...

  10. Linux上挂载NTFS分区

    1.   简介 本文的目的是提供读者在Linux操作系统上如何mount NTFS分区的文件系统的step-by-step指南.本文包括两个部分: 以只读方式mount NTFS文件系统: 以读写方式 ...