文档章节

Apache Hadoop 2.6.0安装部署

lee_ypp
 lee_ypp
发布于 2015/04/02 15:23
字数 1735
阅读 3211
收藏 198

注:本文档参考官方文档编写,原文链接:http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html

   http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/ClusterSetup.html

1.硬件环境

共有 3 台机器,均使用的 linux 系统,Java 使用的是 jdk8.0。 配置如下:
hadoop1.example.com:172.20.115.1(NameNode)
hadoop2.example.com:172.20.115.2(DataNode)
hadoop3.example.com:172.20.115.3 (DataNode)
hadoop4.example.com:172.20.115.4
主机与IP之间有正确解析

2.目录结构

由于 Hadoop 要求所有机器上 hadoop 的部署目录结构要相同,并且都有一个相同的用户名的帐户。
我 的 三 台 机 器 上 是 这 样 的 : 都 有 一 个 hadoop 的 帐 户 , 主 目 录是/home/hadoop。
添加用户hadoop
#useradd -u 800 hadoop
#passwd hadoop 给用户hadoop创建密码
下载hadoop-2.6.0.tar.gz
解压    #tar zxf hadoop-2.6.0.tar.gz
#mv hadoop-2.6.0/ /home/hadoop/
#cd /home/hadoop
#ln -s hadoop-2.6.0/ hadoop
切到hadoop用户 #su - hadoop
下载jdk-8u40-linux-x64.tar.gz
解压到/home/hadoop/hadoop/下

$tar zxvf jdk-8u40-linux-x64.tar.gz -C /home/hadoop/hadoop/

$cd hadoop-2.6.0/

创建软链接,以便与日后的更新、升级

$ln -s jdk jdk1.8.0_40 jdk

再次切换到root

#chown -R hadoop.hadoop hadoop-2.6.0/

3.SSH设置

在 Hadoop 启动以后,Namenode 是通过 SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置 SSH 使用无密码公钥认证的方式。
首先要保证每台机器上都装了 SSH 服务器,且都正常启动。实际中我们用的都是 OpenSSH,这是 SSH 协议的一个免费开源实现。
以本文中的 3 台机器为例,现在 hadoop1 是主节点,它需要主动发起 SSH连接到 hadoop2 ,对于 SSH 服务来说, hadoop1 就是 SSH 客户端,而hadoop2,hadoop3 则是 SSH 服务端,因此在 hadoop2,hadoop3 上需要确定 sshd 服务已经启动。简单的说,在 hadoop1 上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到 hadoop2 上,这样,比如当 hadoop1 向 hadoop2 发起 ssh 连接的时候,hadoop2 上就会生成一个随机数并用 hadoop1 的公钥对这个随机数进行加密并发送给 hadoop1,hadoop1 收到这个加密的数以后用私钥进行解密,并将解密后的数发送回hadoop2,hadoop2 确认解密的数无误后就允许 hadoop1 进行连接了。这就完成了一次公钥认证过程。
对于本文中的 3 台机器,首先在 hadoop1 上生成密钥对:

#su - hadoop
$ssh-keygen

这个命令将为 hadoop1 上的用户 hadoop 生成其密钥对。生成的密钥对id_rsa,id_rsa.pub,在/home/hadoop/.ssh 目录下。

$ssh-copy-id localhost
$ssh-copy-id 172.20.115.2
$ssh-copy-id 172.20.115.3

发布密钥到你本地和hadoop2、hadoop3
试着登录本地和hadoop2、hadoop3看是否有密码验证,无密码即验证成功

4.环境变量(此版本中的配置目录发生很大变化,大家要注意哦!)

在 /home/hadoop/hadoop-2.6.0/etc/hadoop/ 目 录 下 的 hadoop-env.sh 和yarn-env.sh中 设 置Hadoop 需 要 的 环 境 变 量 , 其 中 JAVA_HOME 是 必 须 设 定 的 变 量 。HADOOP_HOME 变量可以设定也可以不设定,如果不设定, HADOOP_HOME默认的是 bin 目录的父目录,即本文中的/home/hadoop/hadoop。

vim /home/hadoop/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/home/hadoop/hadoop/jdk(大概在第25行)

vim  /home/hadoop/hadoop-2.6.0/etc/hadoop/yarn-env.sh

export JAVA_HOME=/home/hadoop/hadoop/jdk(大概在第23行)

先进行简单测试:

$cd  /home/hadoop/hadoop/
$mkdir input
$cp /etc/hadoop/* input/
$bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
$cd output
$cat *

统计文件中的单词:

$bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount input test
$cd test/
$cat *

5.hadoop配置文件

$cd /home/hadoop/hadoop/etc/hadoop/

配置HDFS

/core-site.xml:

configuration>
     <property>
         <name>fs.default.name</name>
         <value>hdfs://hadoop1.example.com:9000</value>
     </property></configuration>

/hdfs-site.xml:

<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property></configuration>


伪分布式测试:

$mkdir /home/hadoop/bin
$ln -s /home/hadoop/hadoop/jdk/bin/jps /home/hadoop/bin/
$cd /home/hadoop/hadoop/
$sbin/hdfs namenode -format  先进行初始化
$sbin/start-dfs.sh

The hadoop daemon log output is written to the $HADOOP_LOG_DIR directory (defaults to $HADOOP_HOME/logs).(写入到日志文件)

web测试http://172.20.115.1:50070/  



$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
$bin/hdfs dfs -put etc/hadoop input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
$ bin/hdfs dfs -get output output
$ cat output/*

配置YARN

cd /home/hadoop/hadoop/

etc/hadoop/mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

etc/hadoop/yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>


Start ResourceManager daemon and NodeManager daemon:

  $ sbin/start-yarn.sh

访问:http://172.20.115.1:8088

如果达到这种效果就说明你已经成功部署伪分布式


6.部署Hadoop集群

前面讲的这么多 Hadoop 的环境变量和配置文件都是在 hadoop1 这台机器上的,现在需要将 hadoop 部署到其他的机器上,保证目录结构一致。

$scp -r /home/hadoop/hadoop hadoop2.example.com:/home/hadoop/

$scp -r /home/hadoop/hadoop hadoop3.example.com:/home/hadoop/

$scp -r .ssh/ hadoop2.example.com:

$scp -r .ssh/ hadoop3.example.com:

注意还要修改以下文件:

$cd /home/hadoop/hadoop/etc/hadoop

/masters

hadoop1.example.com

/slaves

hadoop2.example.com
hadoop3.example.com

$ln -s hadoop-1.2.1/ hadoop
$mkdir /home/hadoop/bin
$ln -s /home/hadoop/hadoop/jdk/bin/jps /home/hadoop/bin
至此,可以说,Hadoop 已经在各个机器上部署完毕了,下面就让我们开始启动 Hadoop 吧。

7. 启动 Hadoop

启动之前,我们先要格式化 namenode,先进入~/hadoop/目录,执行下面的命令:

$bin/hadoop namenode –format

不出意外,应该会提示格式化成功。如果不成功,就去 hadoop/logs/目录下去查看日志文件。
下面就该正式启动 hadoop 啦,在 sbin/下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的 Hadoop 守护

* stop-all.sh 停止所有的 Hadoop

* start-yarn.sh 启动 YARN进程

* stop-yarn.sh 停止YARN进程

* start-dfs.sh 启动 Hadoop DFS 守护

* stop-dfs.sh 停止 DFS 守护

在这里,简单启动所有守护:
[hadoop@hadoop1:hadoop]$sbin/start-all.sh

Starting namenodes on [hadoop1.example.com]

hadoop1.example.com: starting namenode, logging to /home/hadoop/hadoop-2.6.0/logs/hadoop-hadoop-namenode-desktop3.example.com.out

localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.0/logs/hadoop-hadoop-datanode-desktop3.example.com.out

Starting secondary namenodes [0.0.0.0]

0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.6.0/logs/hadoop-hadoop-secondarynamenode-desktop3.example.com.out

15/03/28 08:41:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

starting yarn daemons

starting resourcemanager, logging to /home/hadoop/hadoop-2.6.0/logs/yarn-hadoop-resourcemanager-desktop3.example.com.out

可以发现所有进程成功启动,并写入日志文件。

$jps

查看Jps,NameNode,DataNode,SecondaryNameNode,ResourceManager,NodeManager是否启动成功。
同样,如果要停止 hadoop,则

[hadoop@hadoop1:hadoop]$sbin/stop-all.sh

8. HDFS 操作

运行 sbin/目录的 hadoop 命令,可以查看 Haoop 所有支持的操作及其用法,这里以几个简单的操作为例。
建立目录:

[hadoop@hadoop1 hadoop]$sbin/hadoop dfs -mkdir testdir

在 HDFS 中建立一个名为 testdir 的目录,复制文件:

[hadoop@hadoop1 hadoop]$sbin/hadoop dfs -put /home/large.zip testfile.zip

把本地文件large.zip拷贝到HDFS的根目录下,文件名为testfile.zip,查看现有文件:

[hadoop@hadoop1 hadoop]$sbin/hadoop dfs -ls

hadoop web控制台页面的端口整理:

50070:hdfs文件管理

8088:ResourceManager

8042:NodeManager

19888:JobHistory(使用“mr-jobhistory-daemon.sh”来启动JobHistory Server)



( 博客中免不了会有瑕疵和纰漏,请各位看官指正)                                       --@leeypp.foxmail.com





© 著作权归作者所有

共有 人打赏支持
lee_ypp
粉丝 64
博文 45
码字总数 58692
作品 0
程序员
Hadoop相关文章索引(3)

环境部署 hadoop-2.7.0.tar.gz hadoop 2.6.0单节点-伪分布式模式安装 hadoop2.x配置jobHistory server(转) Hadoop2.7.2集群搭建详解(三台) 基本常识 Hadoop1.x和2.X的HDFS fsimage和edi...

司小幽
08/22
0
0
大数据之MySql早课9.20

1.join语法有哪三种? 2.谈谈你对left join的理解? 3.谈谈对子表的理解 4.谈谈group by需要注意什么? 5.聚合函数有哪些? 6.order by默认是什么排序 7.union 和union all什么区别 8.having一般...

hnairdb
10/17
0
0
centos6.5下部署用于生产的hadoop,并使用C语言API连接hadoop

##### ####安装hadoop2.6.0完全分布式集群 ##### ####文件及系统版本: #### hadoop-2.6.0 Java version 1.8.0_77 centos 64位 ####预备 #### 在/home/hadoop/下:mkdir Cloud 把java和hadoo......

clear_path
06/29
0
0
Hadoop zookeeper HA高可靠集群部署搭建,及错误诊断

http://archive-primary.cloudera.com/cdh5/cdh/5/ 一.准备工作 1.修改Linux主机名,每台都得配置 [root@h24 ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=h201 2.修改IP /etc/s......

mengxiangchang
06/25
0
0
Windows下使用Hadoop2.6.0-eclipse-plugin插件

首先说一下本人的环境: Windows7 64位系统 Spring Tool Suite Version: 3.4.0.RELEASE Hadoop2.6.0 一.简介 Hadoop2.x之后没有Eclipse插件工具,我们就不能在Eclipse上调试代码,我们要把写...

木偶
2015/04/30
0
14

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
14
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部