Hapdoop 安装与使用 gaunthan Posted on Apr 16 2017 ? Big Data ? ? Hapdoop ? > Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。本文将介绍 Hadoop 的安装与配置。 ## 概述 Hadoop 可以运行在 Linux、Windows 以及其他一些 Unix-like 系统上,但是官方真正支持的作业平台只有 Linux。如果想在其他平台安装 Hadoop,则需要安装相关的包以提供一些 Linux 操作系统的功能。本文选择 Linux 作为安装平台。 Hadoop 基本安装配置主要包括以下几个步骤: 1. 创建 Hadoop 用户 2. 安装 Java 3. 设置 SSH 登录权限 4. 单机安装配置 5. 伪分布式安装配置 下面我们一步步地讲解安装过程,所使用的操作系统是 Ubuntu Budgie 17.04。 ## 创建 Hadoop 用户 这一步骤是可以省略的,但为使后续操作方便,我们可以创建一个名为 hadoop 的用户来运行 Hadoop,这样可以使不同用户之间有明确的权限区别,同时使针对 hadoop 的配置不会影响其他用户的使用。实际上,在安装一些大型的软件时(如 MySQL),常常会为其单独创建一个用户。 创建 hadoop 用户及设置其密码的命令如下: sudo useradd -m hadoop -s /bin/bash sudo passwd hadoop 为了方便部署和避免一些比较棘手的权限问题,我们可以给 hadoop 添加管理员权限。执行 `sudo visudo`命令,找到 *root ALL=(ALL:ALL) ALL* 这一行,将其复制,然后将新行的 root 修改为 hadoop,如下图所示:  完成了 hadoop 用户的添加和配置后,执行 su hadoop 切换到 hadoop 用户,后续的配置都将以该用户身份进行。 ## 安装及配置 Java Hadoop 是使用 Java 编写的,它的开发和运行都需要 Java 的支持,一般要求 Java 6 或者更新版本。有关教程请阅:[Linux 安装与配置 Oracle Java](http://leanote.com/blog/post/590342b2ab6441582900443c)。 ## 设置 SSH 登录权限 对于 Hadoop 的集群和单节点模式而言,Hadoop 名称节点(Name Node)需要启动集群中所有机器的 Hadoop 守护进程,这个过程都需要使用 SSH 登录。[^install ssh] [^install ssh]:[在 Ubuntu Desktop 上启用 ssh](http://leanote.com/blog/post/5784ec44ab644133ed009a00) 由于 Hadoop 没有提供 SSH 输入密码登录的形式,因此为了顺利登录每台机器,需要将所有机器配置为名称节点可以无密码登录,即公私钥登录方式。[^login ssh without password] [^login ssh without password]:[SSH 免密码登陆远程主机](http://leanote.com/blog/post/57c827b0ab644135ea06b05f) ## 安装 Hadoop 首先到 [Hadoop 官方下载页](http://hadoop.apache.org/releases.html)下载 Hadoop,也可以到 [hust 镜像网站](http://mirrors.hust.edu.cn/apache/hadoop/common/)下载。对于国内用户,使用国内镜像网站下载速度显著快于官网下载。 这里我选择最新版 Hadoop-2.8.0 进行安装。下载完成后,执行以下命令将其解压: sudo tar xzvf hadoop-2.8.0.tar.gz 接下来选择自己喜欢的安装目录,将解压的文件夹移动到安装目录。**注意文件夹的用户和组都必须是 hadoop**。然后我们进入该目录,执行 `./bin/hadoop version` 查看 Hadoop 的版本信息:  如果执行无误,则 Hadoop 已经安装好了。 ## 配置 Hadoop ### Hadoop 非分布式配置 Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式模式即单 Java 进程,方便进行调试。 ### Hadoop 伪分布式配置 对于大多数开发者而言,可能都没有集群环境。那么怎么进行 Hadoop 的集群实验呢?我们可以将 Hadoop 配置为伪分布式。 伪分布式安装是指在一台机器上模拟一个小的集群。当 Hadoop 应用于集群时,不论是伪分布式还是真正的分布式运行,都需要通过配置文件对各个组件的协同工作进行设置。Hadoop 的配置文件存放在 ./etc/hadoop/ 下,其中最重要的几个配置文件如下表所示: 文件名称|格式|描述 --|-- hadoop-env.sh|Bash 脚本|记录配置 Hadoop 运行所需的环境变量,以运行 Hadoop core-site.xml|Hadoop 配置 XML|Hadoop core 的配置项,如 HDFS 和 MapReduce 常用的 I/O 设置等 hdfs-site.xml|Hadoop 配置 XML|Hadoop 的守护进行的配置项,包括 NameNode、SecondaryNameNode 和 DataNode等 mapred-site.xml|Hadoop 配置 XML|MapReduce 守护进程的配置项,包括 JobTRracker 和 TaskTracker masters|纯文本|运行 SecondaryNameNode 的机器列表(每行一个) slaver|纯文本|运行 DataNode 和 TaskTracker 的机器列表(每行一个) hadoop-metrics.properties|Java 属性|控制 metrics 在 Hadoop 上如何发布的属性 对于伪分布式配置,需要修改 core-site.xml 和 hdfs-site.xml 这两个文件(具体依版本不同可能有所变化)。 #### 修改 core-site.xml 打开 core-site.xml,将其中的 `<configuration>`标签的内容修改为如下: ```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 同样地,修改 hdfs-site.xml: ```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> ``` 注意配置过程中关于 Hadoop 路径的设置需要更改为你自己的配置。 ## 格式化 NameNode 配置完成后,首先需要初始化文件系统,由于 Hadoop 的很多工作是在自带的 HDFS 文件系统上完成的,因此,需要将文件系统初始化之后才能进一步执行计算任务。下面执行 NameNode 的格式化: ./bin/hdfs namenode -format 如果执行成功,则会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错:  ## 启动 Hadoop 执行命令`./sbin/start-dfs.sh`启动进程。如果在这一步遇到 JAVA_HOME 还未设置的错误,即:  但是在检查后发现 JAVA_HOME 变量确实设置好了,那么可以修改 ./etc/hadoop/hadoop-env.sh 文件,将其中的 `export JAVA_HOME=${JAVA_HOME}` 修改为指定绝对路径:  如果没有发生错误的话,再次执行命令应该会显示以下输出结果:  启动 Hadoop 后,可以使用`jps`命令来判断节点是否启动成功。该命令输出线上节点:  可以通过访问 Web 界面(http://localhost:50070)来查看 Hadoop 的信息。 ## 关闭 Hadoop 如果要关闭 Hadoop,可以执行以下命令: ./sbin/stop-dfs.sh **注意,下次启动 Hadoop 时,无需进行 NameNode 的初始化,直接运行 ./sbin/start-dfs.sh 就可以了。** ## References - 林子雨. 大数据技术原理与应用 [M]. 人民邮电出版社, 2015. - [怎样在 Ubuntu 14.04 中安装 Java](https://linux.cn/article-3792-1.html) - [Hadoop 安装教程_单机 / 伪分布式配置](http://www.powerxing.com/install-hadoop/) 赏 Wechat Pay Alipay 安装完 Fedora 25 后要做的事情 Linux 修改系统默认编辑器