1. Hadoop介绍

Hadoop是一个能够对海量数据进行分布式处理的系统架构。

Hadoop框架的核心是:HDFS和MapReduce。

HDFS分布式文件系统为海量的数据提供了存储,

MapReduce分布式处理框架为海量的数据提供了计算。

2. Hadoop安装

2.1 安装java

Hadoop是使用JAVA写的,所以需要先安装JAVA环境。

本次安装的是hadoop-2.7.0,需要JDK 7以上版本。

# yum install java-1.7.0-openjdk
# yum install java-1.7.0-openjdk-devel

安装后确认

# java –version

2.2 需要ssh和rsync

Linux系统一般都已经默认安装了,如果没有,yum安装。

2.3 下载Hadoop

从官网下载Hadoop最新版2.7.0

# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.0/hadoop-2.7.0.tar.gz

将hadoop解压到/usr/local/下

# cd /usr/local/
# tar zxvf /root/hadoop-2.7.0.tar.gz

2.4 设置环境变量

设置JAVA的环境变量,JAVA_HOME是JDK的位置

# vi /etc/profile
export PATH=/usr/local/hadoop-2.7.0/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64

让设置生效

# source /etc/profile

设置Hadoop的JAVA_HOME

# cd hadoop-2.7.0/
# vi etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64

到此,Hadoop的安装就算完成了,接下来进行部署和使用。

3. 单机部署

Hadoop部署方式分三种,Standalone mode、Pseudo-Distributed mode、Cluster mode,其中前两种都是在单机部署。

3.1 standalone mode(本地单独模式)

这种模式,仅1个节点运行1个java进程,主要用于调试。

3.1.1 在Hadoop的安装目录下,创建input目录

# mkdir input

3.1.2 拷贝input文件到input目录下

# cp etc/hadoop/*.xml input

3.1.3 执行Hadoop job

# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs[a-z.]+'

上面的job是使用hadoop自带的样例,在input中统计含有dfs的字符串。

3.1.4 确认执行结果

# cat output/*

3.1.5 问题点

WARN io.ReadaheadPool: Failed readahead on ifile
EBADF: Bad file descriptor

如果出现上面的警告,是因为快速读取文件的时候,文件被关闭引起,也可能是其他bug导致,此处忽略。

3.2 pseudo-distributed mode(伪分布模式)

这种模式是,1个节点上运行,HDFS daemon的 NameNode 和 DataNode、YARN daemon的 ResourceManger 和 NodeManager,分别启动单独的java进程,主要用于调试。

3.2.1 修改设定文件

# vi etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
# vi etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

3.2.2 设定本机的无密码ssh登陆

# ssh-keygen -t rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3.2.3 执行Hadoop job

MapReduce v2 叫做YARN,下面分别操作一下这两种job

3.2.4 执行MapReduce job

3.2.4.1 格式化文件系统

# hdfs namenode -format

3.2.4.2 启动名称节点和数据节点后台进程

# sbin/start-dfs.sh

在localhost启动一个1个NameNode和1个DataNode,在0.0.0.0启动第二个NameNode

3.2.4.3 确认

# jps

3.2.4.4 访问NameNode的web页面

http://localhost:50070/

3.2.4.5 创建HDFS

# hdfs dfs -mkdir /user
# hdfs dfs -mkdir /user/test

3.2.4.6 拷贝input文件到HDFS目录下

# hdfs dfs -put etc/hadoop /user/test/input

确认,查看

# hadoop fs -ls /user/test/input

3.2.4.7 执行Hadoop job

# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep /user/test/input output 'dfs[a-z.]+'

3.2.4.8 确认执行结果

# hdfs dfs -cat output/*

或者从HDFS拷贝到本地查看

# bin/hdfs dfs -get output output
# cat output/*

3.2.4.9 停止daemon

# sbin/stop-dfs.sh

3.2.5 执行YARN job

MapReduce V2框架叫YARN

3.2.5.1 修改设定文件

# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
# vi etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
# vi etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

3.2.5.2 启动ResourceManger和NodeManager后台进程

# sbin/start-yarn.sh

3.2.5.3 确认

# jps

3.2.5.4 访问ResourceManger的web页面

http://localhost:8088/

3.2.5.5 执行hadoop job

# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep /user/test/input output 'dfs[a-z.]+'

3.2.5.6 确认执行结果

# hdfs dfs -cat output/*

执行结果和MapReduce job相同

3.2.5.7 停止daemon

# sbin/stop-yarn.sh

3.2.5.8 问题点

1. 单节点测试情况下,同样的input,时间上YARN比MapReduce好像慢很多,查看日志发现DataNode上GC发生频率较高,可能是测试用VM配置比较低有关。

2. 出现下面警告,是因为没有启动job history server

java.io.IOException: java.net.ConnectException: Call From test166/10.86.255.166 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: Connection refused;

启动jobhistory daemon

# sbin/mr-jobhistory-daemon.sh start historyserver

确认

# jps

访问Job History Server的web页面

http://localhost:19888/

3. 出现下面警告,DataNode日志中有错误,重启服务后恢复

java.io.IOException: java.io.IOException: Unknown Job job_1451384977088_0005

3.3 启动/停止

也可以用下面的启动/停止命令,等同于start/stop-dfs.sh + start/stop-yarn.sh

# sbin/start-all.sh
# sbin/stop-all.sh

3.4 日志

日志在Hadoop安装路径下的logs目录下

4、后

单机部署主要是为了调试用,生产环境上一般是集群部署,接下来会进行介绍。

Hadoop系列之(一):Hadoop单机部署的更多相关文章

  1. 啃掉Hadoop系列笔记(03)-Hadoop运行模式之本地模式

    Hadoop的本地模式为Hadoop的默认模式,不需要启用单独进程,直接可以运行,测试和开发时使用. 在<啃掉Hadoop系列笔记(02)-Hadoop运行环境搭建>中若环境搭建成功,则直 ...

  2. Hadoop 系列文章(二) Hadoop配置部署启动HDFS及本地模式运行MapReduce

    接着上一篇文章,继续我们 hadoop 的入门案例. 1. 修改 core-site.xml 文件 [bamboo@hadoop-senior hadoop-2.5.0]$ vim etc/hadoo ...

  3. hadoop系列一:hadoop集群安装

     转载请在页首明显处注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6384393.html 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据 ...

  4. Hadoop 系列文章(一) Hadoop 的安装,以及 Standalone Operation 的启动模式测试

    以前都是玩 java,没搞过 hadoop,所以以此系列文章来记录下学习过程 安装的文件版本.操作系统说明 centos-6.5-x86_64 [bamboo@hadoop-senior opt]$ ...

  5. 啃掉Hadoop系列笔记(01)-Hadoop框架的大数据生态

    一.Hadoop是什么 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构 2)主要解决,海量数据的存储和海量数据的分析计算问题. 3)广义上来说,HADOOP通常是指一个更广泛的概 ...

  6. Hadoop系列教程<一>---Hadoop是什么呢?

    Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量.Hadoop典型应用有:搜索.日志处理.推荐系统.数据分析.视频图像分析.数据保存等.但 ...

  7. 啃掉Hadoop系列笔记(04)-Hadoop运行模式之伪分布式模式

    伪分布式模式等同于完全分布式,只是她只有一个节点. 一) HDFS上运行MapReduce 程序 (1)配置集群 (a)配置:hadoop-env.sh Linux系统中获取jdk的安装路径:

  8. 啃掉Hadoop系列笔记(02)-Hadoop运行环境搭建

    一.新增一个普通用户bigdata

  9. hadoop系列二:HDFS文件系统的命令及JAVA客户端API

    转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...

随机推荐

  1. Cookie 和 Session 的区别

    [[ from 老生常谈session,cookie的区别,安全性 ]] 一,为什么session,cookie经常会有人提到 做web开发的人基本上都会用session和cookie,但是仅仅只是会 ...

  2. C#组态控件Iocomp应用案例

    Iocomp组件需要在vs2010环境下使用,目前用到的是4.04版本.在两个项目中用到了它,一个是锅炉监控系统,另一个是绝缘靴检测系统. 锅炉监测系统 这个节目基本都是使用Iocomp控件完成. 出 ...

  3. DotNetCore跨平台~性能测试~可以放心使用了

    使用dotnetCore发布站点后,它的处理请求能力不逊色IIS等大型服务的能力,号称每秒能处理115万个请求,太牛X了也. 先看看它支持的数据库 以下主流数据库都是为支持的 Microsoft SQ ...

  4. Linux服务器时间同步方法

    一般稍微大点的项目都会部署到好几台服务器做集群,同一个应用可能部署到几台服务器上,而处理业务中必须让不同的服务器上时间保持一致,这就需要进行服务器间的时间同步.我的做法是: 1,选择其中一台对外网开放 ...

  5. C#常用集合的使用(转载)

    大多数集合都在System.Collections,System.Collections.Generic两个命名空间.其中System.Collections.Generic专门用于泛型集合. 针对特 ...

  6. android MVP模式介绍与实战

    android MVP模式介绍与实战 描述 MVP模式是什么?MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数 ...

  7. javascript-this,call,apply,bind简述1

    最近在系统的学习面向对象方面的知识,遇到的最大拦路虎就数this的指向,call,apply,bind函数的使用,单独抽出一天时间把这几个烦人的家伙搞定,去学习更深入的内容. 首先介绍一下this的一 ...

  8. Oracle执行计划与统计信息的一些总结

    [日期:2011-08-05]来源:Linux社区  作者:wangshengfeng1986211[字体:大 中 小] 2010-07-01 15:03 1.SET AUTOTRACE ON EXP ...

  9. SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)

    (一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,Sh ...

  10. GridView1事件

    1 protected void GridView1_DataBinding(object sender, EventArgs e) { 该事件当服务器控件绑定数据时发生. }2 protected ...