Hadoop简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。

充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称

HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)

来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以

流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海

量的数据提供了存储,而MapReduce则为海量的数据提供了计算  。

环境:

CentOS7。

安装指南:《VMware安装Centos7并联网使用

一、新建hadoop用户

1、以root用户登录虚拟机,创建用户hadoop

$ useradd -m hadoop -s /bin/bash   # 创建新用户hadoop
$ passwd hadoop #设置密码

2、为hadoop用户添加管理员权限

$ visudo

出现以下内容

按下键盘上的esc键,输入“:98”(先输入冒号,再输入98),便于快速定位到98行。按下键盘上的i,进入插入模式。

添加如下内容,空格就是一个tab键。

最后按下esc键,输入“:wq”(先输入冒号,再输入wq),意为保存并退出。

执行exit,退出root状态,重新以hadoop用户登录。

二、安装SSH、配置SSH无密码登录

SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。使用SSH,还有一个额外的好处就是传输的数据是经过压

缩的,所以可以加快传输的速度。

一般情况下,CentOS已经默认帮你安装好了ssh-clients、ssh-server,不需要再额外进行安装。

可以使用shell命令,查看你本机的ssh安装情况。

$ rpm -qa | grep ssh

如果结果如下,包含了ssh-clients、ssh-server,说明已经安装好了,不需要额外安装。

如果未安装,可以通过yum进行安装:

$ sudo yum install openssh-clients
$ sudo yum install openssh-server

执行命令,查看ssh是否可用:

$ ssh localhost

首次登录会有提示:

输入yes,按照提示输入密码,就可以登录到本机。但是这样连接每次都需要输入密码。配置成无密码登录比较方便。

利用ssh-keygen生成密钥,并将密钥添加到授权信息中。

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys # 加入授权
chmod 600 ./authorized_keys # 修改文件权限

需要键入内容地方直接回车。

我们再次使用ssh localhost,就可以直接登录了。

三、安装java环境

下载jdk-8u51-linux-x64.tar.gz压缩包到/home/hadoop/download文件夹,并解压缩到/usr/lib/jvm文件夹

$ tar -zxf ~/download/jdk-8u51-linux-x64.tar.gz -C /usr/lib/jvm

编辑环境变量:

$ vi ~/.bashrc

添加JAVA_HOME:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_51
export PATH=$JAVA_HOME/bin

让环境变量生效:

$ source ~/.bashrc

查看java版本:

$ java -version

检验环境变量是否正确:

$ echo $JAVA_HOME     # 检验变量值
$ java -version
$ $JAVA_HOME/bin/java -version # 与直接执行 java -version 一样

四、安装Hadoop2

镜像仓库:

https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.7/

http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/

下载“*.tar.gz”,-src文件是Hadoop的源码。

将下载的tar.gz文件放到/usr/hadoop/download下。

执行命令解压修改hadoop文件:

$ sudo tar -zxf ~/download/hadoop-2.7.7.tar.gz -C /usr/local    # 解压到/usr/local中
$ cd /usr/local/
$ sudo mv ./hadoop-2.7.7/ ./hadoop # 将文件夹名改为hadoop
$ sudo chown -R hadoop:hadoop ./hadoop # 修改文件权限

查看hadoop版本信息:

$ cd /usr/local/hadoop
$ ./bin/hadoop version

五、Hadoop单机配置(非分布式)

Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。

现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 /usr/local/hadoop/bin/hadoop jar

/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar可以看到所有例子),包括

wordcount、terasort、join、grep 等。

在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式dfs[a-z.]+的单词并统计出

现的次数,最后输出结果到 output 文件夹中。

$ cd /usr/local/hadoop
$ mkdir ./input
$ cp ./etc/hadoop/*.xml ./input # 将配置文件作为输入文件
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep ./input ./output 'dfs[a-z.]+'
$ cat ./output/* # 查看运行结果

**注意: **Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将./output删除。

删除输出文件:

$ rm -r ./output

六、Hadoop伪分布式配置

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为

DataNode,同时,读取的是 HDFS 中的文件。

在设置 Hadoop 伪分布式配置前,我们还需要设置 HADOOP 环境变量,执行如下命令在 ~/.bashrc 中设置:

$ vi ~/.bashrc

在文件最后面增加如下内容:

# Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

使文件生效:

$ source ~/.bashrc

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-

site.xml 。

Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改core-site.xml文件:

将替换成如下内容:

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

修改hdfs-site.xml文件:

将替换成如下内容:

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>

配置完成后,执行 NameNode 的格式化:

$ /usr/local/hadoop/bin/hdfs namenode -format

成功则会显示successfully formatted与Exiting with status 0。失败则会Exiting with status 1。

开启NameNode与DataNode守护进程:

$ /usr/local/hadoop/sbin/start-dfs.sh

出现“Are you sure you want to continue connecting”提示时,输入yes继续执行。

启动完成后,可以通过命令JPS来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode”和

SecondaryNameNode(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。

如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

通过查看启动日志分析启动失败原因

有时 Hadoop 无法正确启动,如 NameNode 进程没有顺利启动,这时可以查看启动日志来排查原因,注意几点:

  • 启动时会提示形如 “localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-localhost.out”,其中 localhost对应你的主机名,但启动的日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-localhost.log 中,所以应该查看这个后缀为.log的文件;
  • 每一次的启动日志都是追加在日志文件之后,所以得拉到最后面看,看下记录的时间就知道了。
  • 一般出错的提示在最后面,也就是写着 Fatal、Error 或者 Java Exception 的地方。
  • 可以在网上搜索一下出错信息,看能否找到一些相关的解决方法。

成功启动后,可以访问 Web 界面http://localhost:50070查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

由于本例中未使用CentOS图形化界面,所以需要在windows浏览器上访问虚拟机中hadoop的web界面。

CentOS7中端口开放请移步《CentOS7 中开放端口》。

七、运行Hadoop伪分布式实例

上面例子是单机模式,读取的数据是本地文件。伪分布式实例数据来源于HDFS文件系统。要使用HDFS,首先需要在HDFS中创

建用户目录。

$ /usr/local/hadoop/bin/hdfs dfs -mkdir -p /user/hadoop

将/usr/local/hadoop/etc/hadoop/下所有xml作为文件复制到hdfs的/user/hadoop/input中。

我们使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应

的绝对路径就是 /user/hadoop/input。

/usr/local/hadoop/bin/hdfs dfs -mkdir input
/usr/local/hadoop/bin/hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

复制完成之后,可以通过命令查看HDFS中文件列表:

$ /usr/local/hadoop/bin/hdfs dfs -ls input

运行MapReduce作业:

$ /usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

查看运行结果:

$ /usr/local/hadoop/bin/hdfs dfs -cat output/*

将HDFS中的文件取回到本地:

$ rm -r /usr/local/hadoop/output    # 先删除本地的 output 文件夹(如果存在)
$ /usr/local/hadoop/bin/hdfs dfs -get output /usr/local/hadoop/output # 将 HDFS 上的 output 文件夹拷贝到本机
cat /usr/local/hadoop/output/*

Hadoop在运行时,输出目录不能存在,如果存在,就会抛出org.apache.hadoop.mapred.FileAlreadyExistsException异常。

所以在运行前,需要删除输出目录。

/usr/local/hadoop/bin/hdfs dfs -rm -r output    # 删除 output 文件夹

关闭Hadoop:

/usr/local/hadoop/sbin/stop-dfs.sh

注意:下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行/usr/local/hadoop/sbin/start-dfs.sh就可以!

八、 启动YARN

新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也称为 YARN,Yet Another Resource Negotiator)。

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展

性。

伪分布式不启动 YARN 也可以,一般不会影响程序执行。

上述通过/usr/local/hadoop/sbin/start-dfs.sh启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让

YARN 来负责资源管理与任务调度。

修改配置文件mapred-site.xml:

$ cd /usr/local/hadoop/etc/hadoop  #进入配置文件的文件夹
$ mv ./mapred-site.xml.template ./mapred-site.xml #重命名
$ vi ./mapred-site.xml #编辑文件

将configuration修改如下:

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

修改配置文件yarn-site.xml:

$ vi ./yarn-site.xml

将configuration修改如下:

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

启动YARN

$ /usr/local/hadoop/sbin/start-yarn.sh      $ 启动YARN
$ /usr/local/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行情况

通过jps查看,可以看到多了ResourceManager与NodeManager两个进程。

启动后,可通过web界面http://localhost:8088/cluster查看任务运行情况

YARN 主要是为集群提供更好的资源管理与任务调度,然而这在单机上体现不出价值,反而会使程序跑得稍慢些。因此在单机上

是否开启 YARN 就看实际情况了。

注意: 不启动 YARN 需重命名 mapred-site.xml

如果不想启动 YARN,务必把配置文件 mapred-site.xml 重命名,改成 mapred-site.xml.template,需要用时改回来就行。否

则在该配置文件存在,而未开启 YARN 的情况下,运行程序会提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,

这也是为何该配置文件初始文件名为 mapred-site.xml.template。

关闭YARN

$ /usr/local/hadoop/sbin/stop-yarn.sh
$ /usr/local/hadoop/sbin/mr-jobhistory-daemon.sh stop historyserver

分布式处理框架Hadoop的安装与使用的更多相关文章

  1. 安装关系型数据库MySQL 安装大数据处理框架Hadoop

    作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1.Hadoop的介绍 Hadoop最早起源于Nutch.Nut ...

  2. 【大数据】安装关系型数据库MySQL安装大数据处理框架Hadoop

    作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1. 简述Hadoop平台的起源.发展历史与应用现状. 列举发展过 ...

  3. 【大数据作业九】安装关系型数据库MySQL 安装大数据处理框架Hadoop

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 4.简述Hadoop平台的起源.发展历史与应用现状. 列举发展过程中 ...

  4. 【大数据应用技术】作业九|安装关系型数据库MySQL 安装大数据处理框架Hadoop

    本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1.安装MySql 按ctrl+alt+t打开终端窗口,安 ...

  5. 【大数据】安装关系型数据库MySQL 安装大数据处理框架Hadoop

    作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1.安装Mysql 使用命令  sudo apt-get ins ...

  6. 大数据学习day18----第三阶段spark01--------0.前言(分布式运算框架的核心思想,MR与Spark的比较,spark可以怎么运行,spark提交到spark集群的方式)1. spark(standalone模式)的安装 2. Spark各个角色的功能 3.SparkShell的使用,spark编程入门(wordcount案例)

    0.前言 0.1  分布式运算框架的核心思想(此处以MR运行在yarn上为例)  提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而 ...

  7. centos中-hadoop单机安装及伪分布式运行实例

    创建用户并加入授权 1,创建hadoop用户 sudo useradd -m hadoop -s /bin/bash 2,修改sudo的配置文件,位于/etc/sudoers,需要root权限才可以读 ...

  8. hadoop的安装和配置(三)完全分布式模式

    博主会用三篇文章为大家详细说明hadoop的三种模式: 本地模式 伪分布模式 完全分布模式 完全分布式模式: 前面已经说了本地模式和伪分布模式,这两种在hadoop的应用中并不用于实际,因为几乎没人会 ...

  9. Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)

    一.准备 1.1创建hadoop用户 $ sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell $ sudo pass ...

随机推荐

  1. C#设计模式之13-职责链模式

    职责链模式(Chain of Responsibility Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archive ...

  2. C#设计模式之8-组合模式

    组合模式(Composite Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/403 访问. 组合模式属 ...

  3. Android 开发学习进程0.14 Bindview recyclerview popwindow使用 window类属性使用

    BindView ButterKnife 优势 绑定组件方便,使用简单 处理点击事件方便,如adapter中的viewholder 同时父组件绑定后子组件无需绑定 注意 在setcontentview ...

  4. md文件批量转化为html

    任务描述 博客的源文件一般以md文件保存 读取md源文件解析为html代码,然后嵌入到body中去 公式部分,需要使用第三方js库加载 实现办法 基于Django实现,进入webpage页面,然后通过 ...

  5. Spring,SpringMVC,MyBatis,Hibernate,Servlet的生命周期,jsp有哪些内置对象,Tomcat,Cookie和Session的作用以及区别,oracle,MYSQL等面试题总结

    1. 什么是Spring,谈谈你对Spring的理解 Spring是我们JAVA开发人员在搭建后台时选用的一个轻量级的开源框架,Spring框架目前也是功能丰富,十分优秀企业级采用最多的一个框架. S ...

  6. [NOIP2019] 划分

    题目 题解 首先YY一个最简单的dp $dp[i][j]=min(dp[j][k]+(sum[i]-sum[j])^2 (sum[i]-sum[j]>=sum[j]-sum[k])$ $dp[i ...

  7. AVL树旋转

    什么是AVL树? AVL树是带有平衡条件的二叉查找树,一颗AVL树首先是二叉查收树(每个节点如果有左子树或右子树,那么左子树中数据小于该节点数据,右子树数据大于该节点数据),其次,AVL树必须满足平衡 ...

  8. yum安装软件时,提示No package netstat available.的解决方法

    1. 序言 如笔者在本机上运行netstat时,提示没有这个命令,向来简单粗暴,直接yum -y install netstat,显然是不能正常安装的. [root@hadoop-103 ~]# yu ...

  9. JavaScript学习系列博客_31_JavaScript Math 工具类

    Math - Math属于一个工具类,它不需要我们创建对象(例如Date日期对象需要通过构造函数创建对象 var 变量=new Date(),Math不需要),它里边封装了属性运算相关的常量和方法 我 ...

  10. rabbitmq python demo 参考链接地址

    链接地址: https://docs.openstack.org/oslo.messaging/latest/reference/server.html https://www.cnblogs.com ...