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

Hadoop2.X/YARN环境搭建详解

215次阅读
没有评论

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

一、我缘何选择 CentOS7.0

2014 年 7 月 7 日 17:39:42 发布了 CentOS 7.0.1406 正式版, 我曾使用过多款 Linux,对于 Hadoop2.X/YARN 的环境配置缘何选择 CentOS7.0,其原因有:

1、界面采用 RHEL7.0 新的 GNOME 界面风,这可不是 CentOS6.5/RHEL6.5 所能比的!(当然,Fedora 早就采用这种风格的了,但是现在的 Fedora 缺包已然不成样子了)

2、曾经,我也用了 RHEL7.0,它最大的问题就是 YUM 没法用,而且总会有 Warning 提示注册购买!为此,必须去修改 YUM 源,还有修改其他的文件使之不提示才能用,看了这么麻烦,想必有很多童鞋滴心就已经凉了 4 / 7 了吧!

3、当然,Ubuntu 系列我用过 Ubuntu14.04/12.04 和 elementaryOS, 不知为何,一用 Ubuntu14.04 就觉得好丑呀!!但是有很多人都说 CentOS 和 RHEL 更丑,但殊不知哪个才是企业级的,那个才是霸主。

另一方面,要求视觉效果的话,建议去装个 elementaryOS 试试,当然,elementaryOS 也有缺陷:它已经许久没有提供更新了,12 年推出的,已逾 2 年未曾发布新版本的系统,也未曾更新网站,与此同时,elementaryOS 的模型 Ubuntu 早就更新换代了,所以,暴露了不少问题,其中麻烦的是不要随意更新系统,否则黑屏,那就真的纯命令行了,漂亮的系统突然被打回原型,那心铁定疤凉疤凉的,而且它更新后的 apt-get 是无法安装某些匹配某些,所以 elementaryOS 只供欣赏把玩!

4、也有人用过 openSUSE,据说是最华丽的系统,在我看来,花哨的 KDE 打开文件 / 软件时显示的一跳一跳的,我心里就痒痒的,没事儿你弄个没用又难看的东东干嘛??干嘛??另外,最新的 openSUSE 对中文的设计的确无法令人满意。另外,就是 openSUSE 的环境不怎么熟悉,欧洲人设计的 GNU/Linux 还有些难适应,当然,我也不打算改旗易帜向欧洲 SUSE 倒戈。

其实,GNU/Linux 版本众多,选择一个适合自己的一款一直玩下去、用下去就足够了,Linux 版本众多,设计各有千秋,但使用大同小异,了解“异”点即可!当然,还是奉劝一句:初学者仅仅跑跑虚拟机看看效果就好,莫要将每款都用会了!毕竟,体验也是学习的动力之一!

二、体验 CentOS7 与之前版本的“异”

初次启动

装完机后,开机进系统的界面换了,乍一看以为是两个内核,原来有一个是 rescue 选择,而且按 e 后,会发现所有的 grub.conf 的信息全出来了,好不容易找到内核启动的地方,写了个 1(要进单用户模式),然后进了 rescue 模式。

字符界面

进系统后,是图形界面,想进字符界面,结果找到 /etc/inittab,发现几乎是个空文件,文件中提示想改 runlevel 的话,可以把 /lib/systemd/system/runlevel*.target 软连到 /etc/systemd/system/default.target 下(当然考过来,覆盖也行),试了一下还行,能改到字符界面 runlevel3。

配置网络和主机名

然后,想配置网络,进 /etc/sysconfig/network-script/ 一看,我靠,网卡改名了 enp1s5,好有趣,配置完网络后改主机名,到 /etc/sysconfig/network 去改名字,发现这个文件也是空的,按原 6 版本的去修改,重启后没效果,man 了一下 hostname,发现 7 中改名要到 /etc/hostname 去改名字。

本地 yum 源和挂载

接着,想配置一个本地 yum 源,配上后要挂光盘,手动挂上了,然后直接 echo“mount ……”到 rc.local 中,毕竟是启动执行脚本,重启之后竟然没挂上,进去 rc.local 中看了一下,7 中竟然要手动的把 chmod +x rc.local, 是的,要手动加执行权限,难道我之前装的 6 以前的系统中这个都要手动加执行权限,我不记得啊!!!!当然,加了权限后,开机后启动执行了 rc.local 的 mount 命令。

LVM 和 xfs

后来,想着装一个 lvm 玩玩,于是啊就分区,格式化(特意格式化为了 xfs),pv,vg,lv 一步一步,都没问题,然后想着放大,缩小,这时出问题了,执行 resize2fs 时,怎么一直报 superblock 什么的出错,这是怎么回事,然后 man resize2fs 一下,发现这命令只支持 ext 的文件系统,我艹,那我装系统是怎么是 lvm 的,这个问题我还没解决,应该有解决方法。

dhcp 和服务

接着,想着装一个 dhcp 玩玩,惊奇的发现所有 dhcp 的包装上之后,不能 service dhcpd start,然后发现 /etc/init.d/ 中竟然没一个 dhcp 类似的东西,毕竟 6 之前有 dhcpd,dhcpd6,dhcrelay 的,然后发现 /sbin/dhcpd 有启动文件,难道,难道,以后的服务想 service 启,都要手动自己编?错了,是在 /usr/lib/systemd/system/dhcpd.service, 还要修改好多,然后加权限,执行 service 服务 restart/stop。。。。。。可以,但是指向了 systemctl restart/start/stop 服务.service

iptables

又发现 iptables 这次也不是作为一个服务在 /etc/init.d/ 下面了,/sbin 下有;

防火墙由 iptables 更换成了 firewalld

 

三、系统配置之关闭防火墙

systemctl stop firewalld.service #停止 firewall

systemctl disable firewalld.service #禁止 firewall 开机启动

systemctl 命令的基本操作格式是:systemctl   动作   服务名.service
动作:start,stop,restart,status,enable,disable,is-enabled

 

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 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

四、配置 Linux 网络

1、修改 hostname

CentOS 7.0 的 hostname 在 /etc/hostname 中用 root 用户修改:

[root@hadoop1 ~]# vim /etc/hostname    #编辑 /etc/hostname
[root@hadoop1 ~]# cat /etc/hostname    #查看 /etc/hostname
hadoop1
[root@hadoop1 ~]#

以前版本的 CentOS 在 /etc/sysconfig/network 中用 root 用户修改:

[root@hadoop1 ~]# vim /etcsysconfig/network

Hadoop2.X/YARN 环境搭建详解

“/etc/sysconfig/network” 的 设定项目 如下:

 
NETWORKING 是否利用网络

GATEWAY 默认网关与接下来配置 IP 的属性文件中默认网关一致

IPGATEWAYDEV 默认网关的接口名

HOSTNAME 主机名

DOMAIN 域名
 

reboot 后 hostname 生效

2、修改当前机器的 IP

        Step1: 进入配置文件目录

        现在已经是 root 权限了,我们 cd 到网络配置文件的目录,并列出目录下的文件。

Hadoop2.X/YARN 环境搭建详解

Hadoop2.X/YARN 环境搭建详解

Step2: 修改配置文件

该目录下,文件名“ifcfg-ens192”文件就是网络配置的主文件。vi 它!

修改或添加一下:

ONBOOT=yes  
BOOTPROTO=static  
IPADDR=IP 地址  
NETMASK=255.255.255.0 #子网掩码 
GATEWAY=192.168.30.1  #网关地址

Hadoop2.X/YARN 环境搭建详解

Step3: 重启网络服务

修改完配置文件后,:wq! 保存退出!然后重启网络。

Hadoop2.X/YARN 环境搭建详解

Step4: 测试

通过 ifconfig 命令查看 ip 是否设置成功,然后 ping 一下网络。这个时候应该成功了!

3、修改 DNS(看情况,非必选)

若网络环境有 DNS 要求, 则配置, 否则,勿配!

格式:

nameserver DNS 地址

[root@hadoop1 ~]# vi /etc/resolv.conf  
nameserver 202.131.80.1    #依需求而定 
nameserver 202.131.80.5    #依需求而定

4、配置 hosts 文件

/etc/hosts“ 这个文件是用来配置主机将用的 DNS 服务器信息,是记载 LAN 内接续的各主机的对应 [HostName 和 IP] 用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的 IP 地址。

我们要测试两台机器之间知否连通,一般用 ”ping 机器的 IP”,如果想用 ”ping 机器的主机名 ” 发现找不见该名称的机器,解决的办法就是修改 ”/etc/hosts“ 这个文件,通过把 LAN 内的各主机的 IP 地址和 HostName 的 一一对应 写入这个文件的时候,就可以解决问题。

例如:机器为 ”hadoop1:59.67.107.80″ 对机器为 ”hadoop2:59.67.107.79″ 用命令 ”ping” 记性连接测试。测试结果如下:

Hadoop2.X/YARN 环境搭建详解

从上图中的值,直接对 IP 地址进行测试,能够 ping 通,但是对主机名进行测试,若没有 ping 通,提示 ”unknown host——未知主机 ”,这时查看 ”hadoop1″ 的 ”/etc/hosts” 文件内容。

若 ping hadoop1 不通则显示:

Hadoop2.X/YARN 环境搭建详解

若 ping hadoop1 通则显示:

Hadoop2.X/YARN 环境搭建详解

若发现里面没有 ”59.67.107.79 hadoop2″ 内容,故而本机器是无法对机器的主机名为 ”hadoop2″ 解析。

在进行 Hadoop 集群 配置中,需要在 ”/etc/hosts” 文件中添加集群中所有机器的 IP 与主机名,这样 Master 与所有的 Slave 机器之间不仅可以通过 IP 进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的 ”/etc/hosts” 文件 末尾 中都要添加如下内容:

因为本文以已经配置好的环境说明,所以我的 /etc/hosts 显示:

Hadoop2.X/YARN 环境搭建详解

一般处于内网下,照此添加(192.168.1.1 为网关):

 
192.168.1.2 hadoop1

192.168.1.3 hadoop2

192.168.1.4 hadoop3

192.168.1.5 hadoop4
 

用以下命令进行添加:

vim /etc/hosts

现在我们在进行对机器为 ”hadoop2″ 的主机名进行 ping 通测试,看是否能测试成功。

Hadoop2.X/YARN 环境搭建详解

从上图中我们已经能用主机名进行 ping 通了,说明我们刚才添加的内容,在局域网内能进行 DNS 解析了,那么现在剩下的事儿就是在其余的 Slave 机器上进行相同的配置。然后进行测试。

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

Hadoop 是 Java 写的,他无法使用 Linux 预安装的 OpenJDK, 因此安装 hadoop 前需要先安装 JDK(1.6 以上)

原材料:在 Oracle 官网下载的 32 位 JDK:

Hadoop2.X/YARN 环境搭建详解

 

Hadoop2.X/YARN 环境搭建详解

Hadoop2.X/YARN 环境搭建详解

 

说明:

1、CentOS 7.0 系统现在只有 64 位的,但是,Hadoop 一般支持 32 位的,在 64 位环境下有事会有 Warning 出现,避免真的有神马问题,选择 i586 的 JDK(即 32 位的),当然,64 位的 CentOS 7 肯定是兼容 32 位 JDK 的,记住:64 位系统肯定兼容 32 位的软件,32 位系统不能兼容 64 位软件。64 位只是说明了 CPU 一次运算的位数为 64 位, 比 32 位多,64 位性能更高。

2、以前的 Linux 版本 JDK 有”.bin”文件可供下载,但是,现在官网只提供 rpm 的安装包与 tar.gz 的压缩包了,rpm 安装包是 RedHat 系列系统(RedHat/RHEL/Fedora/CentOS)特有的安装文件,直接运行即可,但我们不知道其中的配置方法。所以,为接近底层,我选择 tar.gz 的压缩包予以安装。

安装方式:

自带的 OpenJDK 与之后安装的 JDK,不可兼得,故而有两种操作:1、卸载删除原有的 OpenJDK,再安装 JDK    2、二者依然共存,但是,配置何者为真正有效的 JDK

 

Method 1: 卸载删除原有的 OpenJDK,再安装 JDK

第一步:卸载删除 OpenJDK

卸载删除 OpenJDK,首先需要知道到底要删除哪些东西:

 

Hadoop2.X/YARN 环境搭建详解

 

[Randy@localhost ~]$ rpm -qa|grep openjdk -i #查找已经安装的 OpenJDK,- i 表示忽略“openjdk”的大小写

 

现在将之全部删除:

[Randy@localhost ~]$ sudo yum remove java-1.6.0-openjdk-devel-1.6.0.0-6.1.13.4.el7_0.x86_64 java-1.7.0-openjdk-devel-1.7.0.65-2.5.1.2.el7_0.x86_64 java-1.7.0-openjdk-headless-1.7.0.65-2.5.1.2.el7_0.x86_64 java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el7_0.x86_64 java-1.6.0-openjdk-1.6.0.0-6.1.13.4.el7_0.x86_64
#用 RedHat 系列系统自带的 yum 进行删除 openjdk,yum 类似 Ubuntu 中的 apt-get, 均用于安装、卸载及更新系统自带的软件,注意:以上均以空格间隔

 

第二步:安装 JDK

 

1、解压

首先解压下载得来的 JDK:(JDK 的 tar.gz 压缩包放在了~/dev 目录下)

 
[Randy@localhost ~]$ sudo mkdir /usr/lib/jdk #如若没有 /usr/lib/jdk 路径,则执行此句予以创建 jdk 文件夹
[Randy@localhost ~]$ sudo tar -zxvf jdk-8u11-linux-i586.tar.gz -C /usr/lib/jdk #注意:-C, --directory=DIR        改变至目录 DIR
[Randy@localhost ~]$  ls /usr/lib/jdk
jdk1.8.0_11
[Randy@localhost ~]$ ls /usr/lib/jdk/jdk1.8.0_11/
bin        javafx-src.zip  man          THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT  jre             README.html  THIRDPARTYLICENSEREADME.txt
db         lib             release
include    LICENSE         src.zip
[Randy@localhost ~]$
 

 

移动 jdk1.8.0_11 中的文件到 /usr/lib/jdk, 并删除 jdk1.8.0_11 文件夹:

 
[Randy@localhost ~]$ sudo cp -rf /usr/lib/jdk/jdk1.8.0_11/* /usr/lib/jdk/ #移动
[Randy@localhost ~]$ 
[Randy@localhost ~]$  ls /usr/lib/jdk
bin        javafx-src.zip  LICENSE      src.zip
COPYRIGHT  jdk1.8.0_11     man          THIRDPARTYLICENSEREADME-JAVAFX.txt
db         jre             README.html  THIRDPARTYLICENSEREADME.txt
include    lib             release
[Randy@localhost ~]$ sudo rm -rf /usr/lib/jdk/jdk1.8.0_11/ #删除
[Randy@localhost ~]$  ls /usr/lib/jdk
bin        javafx-src.zip  man          THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT  jre             README.html  THIRDPARTYLICENSEREADME.txt
db         lib             release
include    LICENSE         src.zip
[Randy@localhost ~]$
 

 

2、配置环境变量

 
[Randy@localhost ~]$ sudo vim /etc/profile
在最后一行插入:#JAVA Environment
export JAVA_HOME=/usr/lib/jdk
export JRE_HOME=/usr/lib/jdk/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib
 

3、修改系统默认的 JDK

 
[Randy@localhost ~]$  sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/bin/java 300  #使系统默认的 java 命令是 /usr/lib/jdk/bin 中的 java 命令

[Randy@localhost ~]$  sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk/bin/javac 300  #使系统默认的 javac 命令是 /usr/lib/jdk/bin 中的 javac 命令
[Randy@localhost ~]$ sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jdk/bin/jar 300 #使系统默认的 jar 命令是 /usr/lib/jdk/bin 中的 jar 命令 

[Randy@localhost ~]$  sudo update-alternatives --config java   #配���默认 java 命令
共有 1 个提供“java”的程序。选项    命令
-----------------------------------------------
*+ 1          /usr/lib/jdk/bin/java
          
按 Enter 保留当前选项[+],或者键入选项编号:1

[Randy@localhost ~]$ sudo update-alternatives --config javac   #配置默认 java 命令
共有 1 个提供“java”的程序。选项    命令
-----------------------------------------------
*+ 1          /usr/lib/jdk/bin/javac
          
按 Enter 保留当前选项[+],或者键入选项编号:1
 

 

第三步:测试 JDK

[Randy@localhost ~]$ java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) Server VM (build 25.11-b03, mixed mode)
[Randy@localhost ~]$ javac -version
javac 1.8.0_11

 

测试是遇到了一个问题:

 
[Randy@localhost ~]$ java
-bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
[Randy@localhost ~]$ ls /lib/ld-linux
ls: 无法访问 /lib/ld-linux: 没有那个文件或目录
[Randy@localhost ~]$ java -version
-bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
[Randy@localhost ~]$
 

解决方法是:

[Randy@localhost ~]$ sudo yum install glibc.i686 #在 64 系统里执行 32 位程序如果出现 /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory,安装下 glic 即可

 

Method 2: 二者共存,配置何者为真正有效的 JDK

 

与 Method1 类似,只是不需要卸载删除 OpenJDK 

1、解压

首先解压下载得来的 JDK:(JDK 的 tar.gz 压缩包放在了~/dev 目录下)

 
[Randy@localhost ~]$ sudo mkdir /usr/lib/jdk #如若没有 /usr/lib/jdk 路径,则执行此句予以创建 jdk 文件夹
[Randy@localhost ~]$ sudo tar -zxvf jdk-8u11-linux-i586.tar.gz -C /usr/lib/jdk #注意:-C, --directory=DIR        改变至目录 DIR
[Randy@localhost ~]$  ls /usr/lib/jdk
jdk1.8.0_11
[Randy@localhost ~]$ ls /usr/lib/jdk/jdk1.8.0_11/
bin        javafx-src.zip  man          THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT  jre             README.html  THIRDPARTYLICENSEREADME.txt
db         lib             release
include    LICENSE         src.zip
[Randy@localhost ~]$
 

 

移动 jdk1.8.0_11 中的文件到 /usr/lib/jdk, 并删除 jdk1.8.0_11 文件夹:

 
[Randy@localhost ~]$ sudo cp -rf /usr/lib/jdk/jdk1.8.0_11/* /usr/lib/jdk/ #移动
[Randy@localhost ~]$ 
[Randy@localhost ~]$  ls /usr/lib/jdk
bin        javafx-src.zip  LICENSE      src.zip
COPYRIGHT  jdk1.8.0_11     man          THIRDPARTYLICENSEREADME-JAVAFX.txt
db         jre             README.html  THIRDPARTYLICENSEREADME.txt
include    lib             release
[Randy@localhost ~]$ sudo rm -rf /usr/lib/jdk/jdk1.8.0_11/ #删除
[Randy@localhost ~]$  ls /usr/lib/jdk
bin        javafx-src.zip  man          THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT  jre             README.html  THIRDPARTYLICENSEREADME.txt
db         lib             release
include    LICENSE         src.zip
[Randy@localhost ~]$
 

 

2、配置环境变量

 
[Randy@localhost ~]$ sudo vim /etc/profile
在最后一行插入:#JAVA Environment
export JAVA_HOME=/usr/lib/jdk
export JRE_HOME=/usr/lib/jdk/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib
 

3、修改系统默认的 JDK

 
[Randy@localhost ~]$  sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/bin/java 300  #使系统默认的 java 命令是 /usr/lib/jdk/bin 中的 java 命令

[Randy@localhost ~]$  sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk/bin/javac 300  #使系统默认的 javac 命令是 /usr/lib/jdk/bin 中的 javac 命令
[Randy@localhost ~]$ sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jdk/bin/jar 300 #使系统默认的 jar 命令是 /usr/lib/jdk/bin 中的 jar 命令 

[Randy@localhost ~]$  sudo update-alternatives --config java   #配置默认 java 命令

共有 3 个提供“java”的程序。

  选项    命令
———————————————–
*  1          /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el7_0.x86_64/jre/bin/java
  2          /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
+ 3          /usr/lib/jdk/bin/java

按 Enter 保留当前选项[+],或者键入选项编号:3


[Randy@localhost ~]$ sudo update-alternatives --config javac   #配置默认 java 命令

共有 3 个提供“javac”的程序。

  选项    命令
———————————————–
*  1          /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el7_0.x86_64/jre/bin/javac
  2          /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/javac
+ 3          /usr/lib/jdk/bin/javac

按 Enter 保留当前选项[+],或者键入选项编号:3

 

[Randy@localhost ~]$

 

 

第三步:测试 JDK

[Randy@localhost ~]$ java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) Server VM (build 25.11-b03, mixed mode)
[Randy@localhost ~]$ javac -version
javac 1.8.0_11

 

测试是遇到了一个问题:

 
[Randy@localhost ~]$ java
-bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
[Randy@localhost ~]$ ls /lib/ld-linux
ls: 无法访问 /lib/ld-linux: 没有那个文件或目录
[Randy@localhost ~]$ java -version
-bash: /usr/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
[Randy@localhost ~]$
 

解决方法是:

[Randy@localhost ~]$ sudo yum install glibc.i686 #在 64 系统里执行 32 位程序如果出现 /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory,安装下 glic 即可

 

 

附:

说完了 JDK 的环境配置,顺便聊聊 CentOS 7 自带的数据库 MariaDB 的设置。

现在,RHEL 7/CentOS 7 自带的数据库都不再是 MySQL 了,主要是因为开源的能力更大,现在 google 也正将其数据从 MySQL 迁移到 MariaDB。为体验最先进的思想,以后我的 Hive 数据库平台将是 MariaDB

 

系统装好后,系统的 mariadb 服务是出于 stop 状态的,所以应该先启动服务:

[Randy@localhost ~]$ sudo systemctl start mariadb  #之前 CentOS 版本执行 sudo service mariadb start,而 CentOS7 执行 service 命令也可生效,但提示:Redirecting to /bin/systemctl start  mariadb.service

[Randy@localhost ~]$ sudo systemctl stop mariadb  #停止 mariadb 服务
[Randy@localhost ~]$ sudo systemctl status mariadb  #查看 mariadb 状态
[Randy@localhost ~]$

 

设置 mariadb 的 root 密码为“root”:

命令格式:

sudo mysqladmin -u 用户名 password “ 新密码 ”

如果 root 已经设置过密码,采用如下方法:

sudo mysqladmin -u 用户名 password 旧密码 “ 新密码 ”

 

由于安装系统后没有密码,所以设定 root 用户密码为“root”:

[Randy@localhost ~]$ sudo mysqladmin -u root password "root"

 

测试:

[Randy@localhost ~]$ mysql -u root -proot

显示:

 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.37-MariaDB-log MariaDB Server

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
 

 

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

一、我缘何选择 CentOS7.0

2014 年 7 月 7 日 17:39:42 发布了 CentOS 7.0.1406 正式版, 我曾使用过多款 Linux,对于 Hadoop2.X/YARN 的环境配置缘何选择 CentOS7.0,其原因有:

1、界面采用 RHEL7.0 新的 GNOME 界面风,这可不是 CentOS6.5/RHEL6.5 所能比的!(当然,Fedora 早就采用这种风格的了,但是现在的 Fedora 缺包已然不成样子了)

2、曾经,我也用了 RHEL7.0,它最大的问题就是 YUM 没法用,而且总会有 Warning 提示注册购买!为此,必须去修改 YUM 源,还有修改其他的文件使之不提示才能用,看了这么麻烦,想必有很多童鞋滴心就已经凉了 4 / 7 了吧!

3、当然,Ubuntu 系列我用过 Ubuntu14.04/12.04 和 elementaryOS, 不知为何,一用 Ubuntu14.04 就觉得好丑呀!!但是有很多人都说 CentOS 和 RHEL 更丑,但殊不知哪个才是企业级的,那个才是霸主。

另一方面,要求视觉效果的话,建议去装个 elementaryOS 试试,当然,elementaryOS 也有缺陷:它已经许久没有提供更新了,12 年推出的,已逾 2 年未曾发布新版本的系统,也未曾更新网站,与此同时,elementaryOS 的模型 Ubuntu 早就更新换代了,所以,暴露了不少问题,其中麻烦的是不要随意更新系统,否则黑屏,那就真的纯命令行了,漂亮的系统突然被打回原型,那心铁定疤凉疤凉的,而且它更新后的 apt-get 是无法安装某些匹配某些,所以 elementaryOS 只供欣赏把玩!

4、也有人用过 openSUSE,据说是最华丽的系统,在我看来,花哨的 KDE 打开文件 / 软件时显示的一跳一跳的,我心里就痒痒的,没事儿你弄个没用又难看的东东干嘛??干嘛??另外,最新的 openSUSE 对中文的设计的确无法令人满意。另外,就是 openSUSE 的环境不怎么熟悉,欧洲人设计的 GNU/Linux 还有些难适应,当然,我也不打算改旗易帜向欧洲 SUSE 倒戈。

其实,GNU/Linux 版本众多,选择一个适合自己的一款一直玩下去、用下去就足够了,Linux 版本众多,设计各有千秋,但使用大同小异,了解“异”点即可!当然,还是奉劝一句:初学者仅仅跑跑虚拟机看看效果就好,莫要将每款都用会了!毕竟,体验也是学习的动力之一!

二、体验 CentOS7 与之前版本的“异”

初次启动

装完机后,开机进系统的界面换了,乍一看以为是两个内核,原来有一个是 rescue 选择,而且按 e 后,会发现所有的 grub.conf 的信息全出来了,好不容易找到内核启动的地方,写了个 1(要进单用户模式),然后进了 rescue 模式。

字符界面

进系统后,是图形界面,想进字符界面,结果找到 /etc/inittab,发现几乎是个空文件,文件中提示想改 runlevel 的话,可以把 /lib/systemd/system/runlevel*.target 软连到 /etc/systemd/system/default.target 下(当然考过来,覆盖也行),试了一下还行,能改到字符界面 runlevel3。

配置网络和主机名

然后,想配置网络,进 /etc/sysconfig/network-script/ 一看,我靠,网卡改名了 enp1s5,好有趣,配置完网络后改主机名,到 /etc/sysconfig/network 去改名字,发现这个文件也是空的,按原 6 版本的去修改,重启后没效果,man 了一下 hostname,发现 7 中改名要到 /etc/hostname 去改名字。

本地 yum 源和挂载

接着,想配置一个本地 yum 源,配上后要挂光盘,手动挂上了,然后直接 echo“mount ……”到 rc.local 中,毕竟是启动执行脚本,重启之后竟然没挂上,进去 rc.local 中看了一下,7 中竟然要手动的把 chmod +x rc.local, 是的,要手动加执行权限,难道我之前装的 6 以前的系统中这个都要手动加执行权限,我不记得啊!!!!当然,加了权限后,开机后启动执行了 rc.local 的 mount 命令。

LVM 和 xfs

后来,想着装一个 lvm 玩玩,于是啊就分区,格式化(特意格式化为了 xfs),pv,vg,lv 一步一步,都没问题,然后想着放大,缩小,这时出问题了,执行 resize2fs 时,怎么一直报 superblock 什么的出错,这是怎么回事,然后 man resize2fs 一下,发现这命令只支持 ext 的文件系统,我艹,那我装系统是怎么是 lvm 的,这个问题我还没解决,应该有解决方法。

dhcp 和服务

接着,想着装一个 dhcp 玩玩,惊奇的发现所有 dhcp 的包装上之后,不能 service dhcpd start,然后发现 /etc/init.d/ 中竟然没一个 dhcp 类似的东西,毕竟 6 之前有 dhcpd,dhcpd6,dhcrelay 的,然后发现 /sbin/dhcpd 有启动文件,难道,难道,以后的服务想 service 启,都要手动自己编?错了,是在 /usr/lib/systemd/system/dhcpd.service, 还要修改好多,然后加权限,执行 service 服务 restart/stop。。。。。。可以,但是指向了 systemctl restart/start/stop 服务.service

iptables

又发现 iptables 这次也不是作为一个服务在 /etc/init.d/ 下面了,/sbin 下有;

防火墙由 iptables 更换成了 firewalld

 

三、系统配置之关闭防火墙

systemctl stop firewalld.service #停止 firewall

systemctl disable firewalld.service #禁止 firewall 开机启动

systemctl 命令的基本操作格式是:systemctl   动作   服务名.service
动作:start,stop,restart,status,enable,disable,is-enabled

 

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 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

四、配置 Linux 网络

1、修改 hostname

CentOS 7.0 的 hostname 在 /etc/hostname 中用 root 用户修改:

[root@hadoop1 ~]# vim /etc/hostname    #编辑 /etc/hostname
[root@hadoop1 ~]# cat /etc/hostname    #查看 /etc/hostname
hadoop1
[root@hadoop1 ~]#

以前版本的 CentOS 在 /etc/sysconfig/network 中用 root 用户修改:

[root@hadoop1 ~]# vim /etcsysconfig/network

Hadoop2.X/YARN 环境搭建详解

“/etc/sysconfig/network” 的 设定项目 如下:

 
NETWORKING 是否利用网络

GATEWAY 默认网关与接下来配置 IP 的属性文件中默认网关一致

IPGATEWAYDEV 默认网关的接口名

HOSTNAME 主机名

DOMAIN 域名
 

reboot 后 hostname 生效

2、修改当前机器的 IP

        Step1: 进入配置文件目录

        现在已经是 root 权限了,我们 cd 到网络配置文件的目录,并列出目录下的文件。

Hadoop2.X/YARN 环境搭建详解

Hadoop2.X/YARN 环境搭建详解

Step2: 修改配置文件

该目录下,文件名“ifcfg-ens192”文件就是网络配置的主文件。vi 它!

修改或添加一下:

ONBOOT=yes  
BOOTPROTO=static  
IPADDR=IP 地址  
NETMASK=255.255.255.0 #子网掩码 
GATEWAY=192.168.30.1  #网关地址

Hadoop2.X/YARN 环境搭建详解

Step3: 重启网络服务

修改完配置文件后,:wq! 保存退出!然后重启网络。

Hadoop2.X/YARN 环境搭建详解

Step4: 测试

通过 ifconfig 命令查看 ip 是否设置成功,然后 ping 一下网络。这个时候应该成功了!

3、修改 DNS(看情况,非必选)

若网络环境有 DNS 要求, 则配置, 否则,勿配!

格式:

nameserver DNS 地址

[root@hadoop1 ~]# vi /etc/resolv.conf  
nameserver 202.131.80.1    #依需求而定 
nameserver 202.131.80.5    #依需求而定

4、配置 hosts 文件

/etc/hosts“ 这个文件是用来配置主机将用的 DNS 服务器信息,是记载 LAN 内接续的各主机的对应 [HostName 和 IP] 用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的 IP 地址。

我们要测试两台机器之间知否连通,一般用 ”ping 机器的 IP”,如果想用 ”ping 机器的主机名 ” 发现找不见该名称的机器,解决的办法就是修改 ”/etc/hosts“ 这个文件,通过把 LAN 内的各主机的 IP 地址和 HostName 的 一一对应 写入这个文件的时候,就可以解决问题。

例如:机器为 ”hadoop1:59.67.107.80″ 对机器为 ”hadoop2:59.67.107.79″ 用命令 ”ping” 记性连接测试。测试结果如下:

Hadoop2.X/YARN 环境搭建详解

从上图中的值,直接对 IP 地址进行测试,能够 ping 通,但是对主机名进行测试,若没有 ping 通,提示 ”unknown host——未知主机 ”,这时查看 ”hadoop1″ 的 ”/etc/hosts” 文件内容。

若 ping hadoop1 不通则显示:

Hadoop2.X/YARN 环境搭建详解

若 ping hadoop1 通则显示:

Hadoop2.X/YARN 环境搭建详解

若发现里面没有 ”59.67.107.79 hadoop2″ 内容,故而本机器是无法对机器的主机名为 ”hadoop2″ 解析。

在进行 Hadoop 集群 配置中,需要在 ”/etc/hosts” 文件中添加集群中所有机器的 IP 与主机名,这样 Master 与所有的 Slave 机器之间不仅可以通过 IP 进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的 ”/etc/hosts” 文件 末尾 中都要添加如下内容:

因为本文以已经配置好的环境说明,所以我的 /etc/hosts 显示:

Hadoop2.X/YARN 环境搭建详解

一般处于内网下,照此添加(192.168.1.1 为网关):

 
192.168.1.2 hadoop1

192.168.1.3 hadoop2

192.168.1.4 hadoop3

192.168.1.5 hadoop4
 

用以下命令进行添加:

vim /etc/hosts

现在我们在进行对机器为 ”hadoop2″ 的主机名进行 ping 通测试,看是否能测试成功。

Hadoop2.X/YARN 环境搭建详解

从上图中我们已经能用主机名进行 ping 通了,说明我们刚才添加的内容,在局域网内能进行 DNS 解析了,那么现在剩下的事儿就是在其余的 Slave 机器上进行相同的配置。然后进行测试。

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

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