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. [netty4][netty-common]netty之ResourceLeakDetector的使用与实现

    netty之ResourceLeakDetector的使用与实现 通过WeakReference和ReferenceQueue做针对需要手动释放的资源的侦测 使用 设置日志级别: ServerBoot ...

  2. Excel 提取年月日①

    问题场景 从任务数据表中比较所有任务的预计完成时间和实际完成时间,来判断该任务是逾期还是按期完成了,根据实际场景是不需要考虑时分秒,只需对比该任务预计完成和实际完成的年月日. 可通过提取年月日用函数进 ...

  3. Git操作之码云代码clone

    安装Git https://git-scm.com/book/zh/v2/起步-安装-Git Git的网站上有详细的分各种系统的安装教程. 配置Git 1. 打开你要放置项目的本地路径,右键选择$ G ...

  4. Jmeter 常用函数(9)- 详解 __UUID

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 返回 伪随机类型4 通用唯一标识符 语 ...

  5. 3.配置及其名ip映射

    sudo vi /etc/hosts 192.168.117.50 master192.168.117.60 slave1192.168.117.70 slave2192.168.117.80 sla ...

  6. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

  7. fdisk时WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.

    现象:划分磁盘有警告, fdisk可以看到 lsblk却没有 partprobe刷新分区还是不行 放大招 #reboot   #这个是最好的方法(重启后新的分区表不一定生效) 或 # partx -a ...

  8. css设置图片宽高后,图片变模糊的问题

    参考网站:https://segmentfault.com/q/1010000010391524 { image-rendering: -moz-crisp-edges; /* Firefox */ ...

  9. 数字货币比特币以太坊买卖五档行情数据API接口

    数字货币比特币以太坊买卖五档行情数据API接口       数字货币一般包含比特币BTC.以太坊ETH.瑞波币XRP.泰达币USDT.比特币现金BCH.比特币SV.莱特币LTC.柚子币EOS.OKB. ...

  10. call、apply、bind 的用法

    例1 obj.objAge; //17 obj.myFun() //小张年龄undefined 例2 shows() //盲僧 比较一下这两者this 的差别,第一个打印里面的this 指向obj,第 ...