阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 6.5上搭建Hadoop环境详解

454次阅读
没有评论

共计 9105 个字符,预计需要花费 23 分钟才能阅读完成。

本文详细记录在开发服务器 CentOS 6.5 上搭建 Hadoop 的详细过程。

ssh 连接免密码配置

由于配置过程中需要频繁的进行 ssh 连接到开发服务器执行命令以及通过 scp 命令向服务器拷贝文件等依赖 ssh 连接的操作。所以,配置本地环境跟服务器之间的 ssh 免密码连接可以有效的提升工作效率。

由于我本机已经生成过公钥,所以我只需将已有的公钥拷贝到服务器即可。推荐使用 ssh-copy-id 命令,简单又不会出错。手动 copy 再 append 的公钥文件尾,容易因为操作问题,造成无法正确识别公钥。

注:如果你没有生成过公钥,可通过 ssh-keygen 命令生成公钥。走默认配置即可。

在我的 mac 上,居然还没有安装 ssh-copy-id 命令。通过brew 命令安装即可。

brew install ssh-copy-id

然后 copy 公钥到指定主机

ssh-copy-id root@172.20.2.14

其中,root@172.20.2.14 改为你需要访问的服务器的 用户名 @IP。根据提示输入一次密码。成功后,所有基于 ssh 的命令你只需要通过 用户名 @IP 即可直接访问服务器。

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop 2.6.0 HA 高可用集群配置详解  http://www.linuxidc.com/Linux/2016-08/134180.htm

Ubuntu 16.04 安装 Hadoop2.6+Spark1.6+ 开发实例  http://www.linuxidc.com/Linux/2016-08/134101.htm

新用户、用户组创建

为了更好的权限控制,养成良好的 Linux 使用习惯,我们首先创建一个管理和使用 hadoop 集群的用户(组)dps-hadoop。这也是 hadoop 集群管理所需要的环境配置。

groupadd dps-hadoop
useradd -d /home/dps-hadoop -g dps-hadoop dps-hadoop

考虑到难免需要使用 sudo 提权的情况,给该用户配置到 sudo 名单下, 修改 /etc/sudoers 文件。

vim /etc/sudoers

新增一行记录:

dps-hadoop ALL=(ALL) ALL

CentOS 6.5 上搭建 Hadoop 环境详解

此后,我们均使用 dps-hadoop 用户进行操作。

配置本地 DNS 服务器

之前我介绍了 如何用 Docker 搭建本地的 DNS 服务器 ,这里终于派上用处。如果你没有本地 DNS 服务器,那么你修改/etc/hosts 文件也可以。对于 CentOS,临时生效的配置文件在

/etc/resolv.conf

你可以看到该文件开头提示你,该文件是自动生成的。重启网络服务会覆盖,永久配置修改

/etc/sysconfig/network-scripts/ifcfg-eth0

修改其中的

DNS1=172.20.2.24

其中ifcfg-eth0,改为你自己的网卡名即可。

安装 JDK

Hadoop是 Java 开发的,自然需要依赖 jre 运行。我采用了比较本的方法,现在 Oracle 官网下载 jdk-8u77 到本地,再通过 scp 命令拷贝到服务器的方式。进入 jdk 所在文件夹执行

scp jdk-8u77-linux-x64.rpm dps-hadoop@172.20.2.14:~/download

其实通过 wget 也可以下载,但是网上给出的命令

wget --no-cookie --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm

我试了多次均未成功。我自己有个笨方法,就是先通过浏览器获取下载获取到真正的下载地址

CentOS 6.5 上搭建 Hadoop 环境详解

然后再通过 wget 下载:

wget http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-linux-x64.rpm?AuthParam=1460511903_6b2f8345927b3fc4f961fbcaba6a01b3

下载后,你可能需要进行一次重命名,将多余的 ?AuthParam 后缀去掉。

mv jdk-8u77-linux-x64.rpm?AuthParam=1460511903_6b2f8345927b3fc4f961fbcaba6a01b3 jdk-8u77-linux-x64.rpm

最后,安装 jdk

rpm -i jdk-8u77-linux-x64.rpm

配置 JAVA_HOME

修改 dps-hadoop 用户自己的环境变量配置文件。

vim ~/.bashrc

注意:网上提到了配置环境变量的方式有很多,粗暴的就是直接配置在 /etc/environment/etc/profile等全局配置文件中,对所有用户生效。不推荐这种做法。对于用户级的变量也有两个 ~/.bash_profile~/.bashrc,区别请自行研究。如果你想通过执行 start-dfs.sh 等脚本,远程起停 hadoop 集群,那么请配置在 ~/.bashrc 中,否则 hadoop 会找不到你配置的环境变量。

例如:Error: JAVA_HOME is not set and could not be found.

添加

export JAVA_HOME="/usr/java/jdk1.8.0_77"

不建议配置到/etc/environment 下,因为会对所有用户生效。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-08/134539p2.htm

安装 Hadoop 2.6.4

根据官网介绍,Hadoop 项目实际包含以下模块:

  • Hadoop Common: The common utilities that support the other Hadoop modules.
  • Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
  • Hadoop YARN: A framework for job scheduling and cluster resource management.
  • Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.

首先,直接通过 wget,从镜像站下载。

wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz

解压到用户目录

tar -xvzf hadoop-2.6.4.tar.gz -C ~/

配置 HADOOP_HOME,同样修改~/.bashrc 文件。增加

export HADOOP_HOME="/home/dps-hadoop/hadoop-2.6.4"

在其他节点重复上述所有配置操作。

  • 添加用户
  • 配置 dps-hadoop 用户,从 master 到各 slave 节点间的 ssh 免密码访问。
  • 修改 DNS 服务器地址
  • 安装 JDK
  • 下载解压 Hadoop
  • 配置 Hadoop 环境变量

配置集群

从模块角度理解,配置 hadoop 集群应包括 HDFSYARNMapReduce这三部分配置。

HDFS 配置

不考虑调优,仅从功能可运行上来理解,HDFS 配置需要分别配置 namenode、datanode 的 ip 和端口号。数据备份份数。数据存放地址。因此配置如下:

namenode

core-site.xml

<configuration>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/dps-hadoop/tmpdata</value>
     </property>
     <property>
           <name>fs.default.name</name>
              <value>hdfs://master:54000/</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/dps-hadoop//namedata</value>
     </property>
    <property>
            <name>dfs.replication</name>
            <value>2</value>
     </property>
</configuration>
Datanode

core-site.xml

<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/dps-hadoop/tmpdata</value>
         </property>
         <property>
           <name>fs.default.name</name>
              <value>hdfs://master:54000/</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/dps-hadoop/datadir</value>
     </property>
</configuration>

这里只有 core-site.xml 里的 hadoop.tmp.dir 的配置是我们之前没有提到的。该配置是修改临时文件的存储路径,避免因为系统重启造成的临时文件的丢失,从而导致集群不可能用的情况出现。

2016-04-28 注:

	<property>
           <name>fs.default.name</name>
           <value>hdfs://master:54000/</value>
    </property>

该配置必须配置在 core-site.xml 配置文件中,之前的配置是错误的。否则,各个 hdfs 节点不在一个集群中。

启动 HDFS 集群

跟使用硬盘一样,HDFS 使用前也需要格式化

bin/hdfs namenode -format

然后启动

sbin/start-dfs.sh

通过控制台,可查看 HDFS 集群状态

http://172.20.2.14:50070/

一个插曲

启动时候发现一个 WARN 日志。

16/04/19 13:59:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

无法加载本地库。从 stackoverflow 上答案来看,主要有三种可能。

  • 没有指定 java.library.path 环境变量。
  • 本地库跟系统不兼容。(64 位系统,提供的是 32 位的本地库)
  • GLIBC 版本不兼容

通过 file 命令查看

file lib/native/*

CentOS 6.5 上搭建 Hadoop 环境详解

已经是 64 位的本地库。

修改log4j.properties 打开本地加载的 debug 级别

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG

再次启动发现问题

16/04/19 14:27:00 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /home/dps-hadoop/hadoop-2.6.4/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14’not found (required by /home/dps-hadoop/hadoop-2.6.4/lib/native/libhadoop.so.1.0.0)

通过

ldd --version

发现我本地环境的版本是 2.12 的。这个不升级系统版本很难解决。把 log 改成ERROR,暂时眼不见心不烦吧。

YARN 配置

在 YARN 里,主节点称为 ResourceManager,从节点称为NodeManager。根据理解,需要告知NodeManager, ResouceManager 的通信地址。对于 ResourceManager 来说,所以的从节点已经配置在 slaves 中了。因此,配置如下:

NodeManager

yarn-site.xml

<configuration>
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>
</configuration>

启动 yarn,主节点执行

.sbin/start-yarn.sh

MapReduce JobHistoryServer

对于MapReduce,默认无需特殊配置。Hadoop 提供了一个管理任务执行历史的服务JobHistoryServer。按需启动即可。

mr-jobhistory-daemon.sh stop historyserver

至此,一个基本的 Hadoop 集群已经启动完成。

集群管理环境 WebUI 地址

Hadoop 默认提供了查看集群状态的 Web 服务,在主节点上启动。默认端口如下。

  • HDFS 集群管理,默认端口 50070。http://master:50070/
  • ResourceManager 管理,默认端口 8088 http://master:8088/
  • JobHistory 默认端口 19888 http://master:19888

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134539.htm

本文详细记录在开发服务器 CentOS 6.5 上搭建 Hadoop 的详细过程。

ssh 连接免密码配置

由于配置过程中需要频繁的进行 ssh 连接到开发服务器执行命令以及通过 scp 命令向服务器拷贝文件等依赖 ssh 连接的操作。所以,配置本地环境跟服务器之间的 ssh 免密码连接可以有效的提升工作效率。

由于我本机已经生成过公钥,所以我只需将已有的公钥拷贝到服务器即可。推荐使用 ssh-copy-id 命令,简单又不会出错。手动 copy 再 append 的公钥文件尾,容易因为操作问题,造成无法正确识别公钥。

注:如果你没有生成过公钥,可通过 ssh-keygen 命令生成公钥。走默认配置即可。

在我的 mac 上,居然还没有安装 ssh-copy-id 命令。通过brew 命令安装即可。

brew install ssh-copy-id

然后 copy 公钥到指定主机

ssh-copy-id root@172.20.2.14

其中,root@172.20.2.14 改为你需要访问的服务器的 用户名 @IP。根据提示输入一次密码。成功后,所有基于 ssh 的命令你只需要通过 用户名 @IP 即可直接访问服务器。

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop 2.6.0 HA 高可用集群配置详解  http://www.linuxidc.com/Linux/2016-08/134180.htm

Ubuntu 16.04 安装 Hadoop2.6+Spark1.6+ 开发实例  http://www.linuxidc.com/Linux/2016-08/134101.htm

新用户、用户组创建

为了更好的权限控制,养成良好的 Linux 使用习惯,我们首先创建一个管理和使用 hadoop 集群的用户(组)dps-hadoop。这也是 hadoop 集群管理所需要的环境配置。

groupadd dps-hadoop
useradd -d /home/dps-hadoop -g dps-hadoop dps-hadoop

考虑到难免需要使用 sudo 提权的情况,给该用户配置到 sudo 名单下, 修改 /etc/sudoers 文件。

vim /etc/sudoers

新增一行记录:

dps-hadoop ALL=(ALL) ALL

CentOS 6.5 上搭建 Hadoop 环境详解

此后,我们均使用 dps-hadoop 用户进行操作。

配置本地 DNS 服务器

之前我介绍了 如何用 Docker 搭建本地的 DNS 服务器 ,这里终于派上用处。如果你没有本地 DNS 服务器,那么你修改/etc/hosts 文件也可以。对于 CentOS,临时生效的配置文件在

/etc/resolv.conf

你可以看到该文件开头提示你,该文件是自动生成的。重启网络服务会覆盖,永久配置修改

/etc/sysconfig/network-scripts/ifcfg-eth0

修改其中的

DNS1=172.20.2.24

其中ifcfg-eth0,改为你自己的网卡名即可。

安装 JDK

Hadoop是 Java 开发的,自然需要依赖 jre 运行。我采用了比较本的方法,现在 Oracle 官网下载 jdk-8u77 到本地,再通过 scp 命令拷贝到服务器的方式。进入 jdk 所在文件夹执行

scp jdk-8u77-linux-x64.rpm dps-hadoop@172.20.2.14:~/download

其实通过 wget 也可以下载,但是网上给出的命令

wget --no-cookie --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm

我试了多次均未成功。我自己有个笨方法,就是先通过浏览器获取下载获取到真正的下载地址

CentOS 6.5 上搭建 Hadoop 环境详解

然后再通过 wget 下载:

wget http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-linux-x64.rpm?AuthParam=1460511903_6b2f8345927b3fc4f961fbcaba6a01b3

下载后,你可能需要进行一次重命名,将多余的 ?AuthParam 后缀去掉。

mv jdk-8u77-linux-x64.rpm?AuthParam=1460511903_6b2f8345927b3fc4f961fbcaba6a01b3 jdk-8u77-linux-x64.rpm

最后,安装 jdk

rpm -i jdk-8u77-linux-x64.rpm

配置 JAVA_HOME

修改 dps-hadoop 用户自己的环境变量配置文件。

vim ~/.bashrc

注意:网上提到了配置环境变量的方式有很多,粗暴的就是直接配置在 /etc/environment/etc/profile等全局配置文件中,对所有用户生效。不推荐这种做法。对于用户级的变量也有两个 ~/.bash_profile~/.bashrc,区别请自行研究。如果你想通过执行 start-dfs.sh 等脚本,远程起停 hadoop 集群,那么请配置在 ~/.bashrc 中,否则 hadoop 会找不到你配置的环境变量。

例如:Error: JAVA_HOME is not set and could not be found.

添加

export JAVA_HOME="/usr/java/jdk1.8.0_77"

不建议配置到/etc/environment 下,因为会对所有用户生效。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-08/134539p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9105字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7961254
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...