共计 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
“/etc/sysconfig/network” 的 设定项目 如下:
NETWORKING 是否利用网络
GATEWAY 默认网关与接下来配置 IP 的属性文件中默认网关一致
IPGATEWAYDEV 默认网关的接口名
HOSTNAME 主机名
DOMAIN 域名
reboot 后 hostname 生效
2、修改当前机器的 IP
Step1: 进入配置文件目录
现在已经是 root 权限了,我们 cd 到网络配置文件的目录,并列出目录下的文件。
Step2: 修改配置文件
该目录下,文件名“ifcfg-ens192”文件就是网络配置的主文件。vi 它!
修改或添加一下:
ONBOOT=yes
BOOTPROTO=static
IPADDR=IP 地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.30.1 #网关地址
Step3: 重启网络服务
修改完配置文件后,:wq! 保存退出!然后重启网络。
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” 记性连接测试。测试结果如下:
从上图中的值,直接对 IP 地址进行测试,能够 ping 通,但是对主机名进行测试,若没有 ping 通,提示 ”unknown host——未知主机 ”,这时查看 ”hadoop1″ 的 ”/etc/hosts” 文件内容。
若 ping hadoop1 不通则显示:
若 ping hadoop1 通则显示:
若发现里面没有 ”59.67.107.79 hadoop2″ 内容,故而本机器是无法对机器的主机名为 ”hadoop2″ 解析。
在进行 Hadoop 集群 配置中,需要在 ”/etc/hosts” 文件中添加集群中所有机器的 IP 与主机名,这样 Master 与所有的 Slave 机器之间不仅可以通过 IP 进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的 ”/etc/hosts” 文件 末尾 中都要添加如下内容:
因为本文以已经配置好的环境说明,所以我的 /etc/hosts 显示:
一般处于内网下,照此添加(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 通测试,看是否能测试成功。
从上图中我们已经能用主机名进行 ping 通了,说明我们刚才添加的内容,在局域网内能进行 DNS 解析了,那么现在剩下的事儿就是在其余的 Slave 机器上进行相同的配置。然后进行测试。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-11/108915p2.htm
Hadoop 是 Java 写的,他无法使用 Linux 预安装的 OpenJDK, 因此安装 hadoop 前需要先安装 JDK(1.6 以上)
原材料:在 Oracle 官网下载的 32 位 JDK:
说明:
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,首先需要知道到底要删除哪些东西:
[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
“/etc/sysconfig/network” 的 设定项目 如下:
NETWORKING 是否利用网络
GATEWAY 默认网关与接下来配置 IP 的属性文件中默认网关一致
IPGATEWAYDEV 默认网关的接口名
HOSTNAME 主机名
DOMAIN 域名
reboot 后 hostname 生效
2、修改当前机器的 IP
Step1: 进入配置文件目录
现在已经是 root 权限了,我们 cd 到网络配置文件的目录,并列出目录下的文件。
Step2: 修改配置文件
该目录下,文件名“ifcfg-ens192”文件就是网络配置的主文件。vi 它!
修改或添加一下:
ONBOOT=yes
BOOTPROTO=static
IPADDR=IP 地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.30.1 #网关地址
Step3: 重启网络服务
修改完配置文件后,:wq! 保存退出!然后重启网络。
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” 记性连接测试。测试结果如下:
从上图中的值,直接对 IP 地址进行测试,能够 ping 通,但是对主机名进行测试,若没有 ping 通,提示 ”unknown host——未知主机 ”,这时查看 ”hadoop1″ 的 ”/etc/hosts” 文件内容。
若 ping hadoop1 不通则显示:
若 ping hadoop1 通则显示:
若发现里面没有 ”59.67.107.79 hadoop2″ 内容,故而本机器是无法对机器的主机名为 ”hadoop2″ 解析。
在进行 Hadoop 集群 配置中,需要在 ”/etc/hosts” 文件中添加集群中所有机器的 IP 与主机名,这样 Master 与所有的 Slave 机器之间不仅可以通过 IP 进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的 ”/etc/hosts” 文件 末尾 中都要添加如下内容:
因为本文以已经配置好的环境说明,所以我的 /etc/hosts 显示:
一般处于内网下,照此添加(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 通测试,看是否能测试成功。
从上图中我们已经能用主机名进行 ping 通了,说明我们刚才添加的内容,在局域网内能进行 DNS 解析了,那么现在剩下的事儿就是在其余的 Slave 机器上进行相同的配置。然后进行测试。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-11/108915p2.htm