[实验] Hadoop 大数据平台的搭建 (单机版)

纪念:站主于 2019 年 10 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

软件准备:

在 Hadoop 官网上下载搭建平台所需软件 Hadoop(本次实验使用的是 hadoop-3.2.1.tar.gz):

http://hadoop.apache.org

正文:

步骤一:硬件环境要求

1) CPU:双核
2) 内存:2G 以上
3) 硬盘:10G 以上

步骤二:系统环境要求

1) 服务器的系统需要是 CentOS Linux 7 版本
2) 服务器系统要配置好可用的软件源
3) 服务器要能 ping 通自己的主机名

步骤三:软件环境要求

3.1 安装 Hadoop 所需的 Java 环境

# yum install java-1.8.0-openjdk-devel

(补充:这里安装 java-openjdk-devel 的版本是 1.8.0)

3.2 显示本机在 Java 环境下所处的角色

# jps

步骤四:安装 Hadoop

4.1 解压 Hadoop 安装包

# tar -xvf hadoop-3.2.1.tar.gz

(补充:这里要安装的 hadoop 版本是 3.2.1)

4.2 创建 Hadoop 的安装目录

# mkdir /usr/local/hadoop

4.3 安装 Hadoop

# mv hadoop-3.2.1/* /usr/local/hadoop

(补充:这里安装的是 hadoop-3.2.1.tar.gz)

4.4 第 1 次启动 Hadoop 会提示报错

/usr/local/hadoop/bin/hadoop
Error: JAVA_HOME is not set and could not be found.

(补充:造成这种原因,主要是他找不到自己的配置文件和自己所需要的配置文件)

4.5 解决第 1 次启动 Hadoop 报错的问题

4.5.1 解决第 1 次启动 Hadoop 报错问题的思路

先确认刚刚安装的 java-1.8.0-openjdk-devel 软件的安装位置,然后再将这个位置写到 Hadoop 的配置文件里

4.5.2 显示 java-1.8.0-openjdk-devel 软件的安装位置
# rpm -ql java-1.8.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/bin/policytool
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/lib/amd64/libawt_xawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/lib/amd64/libjawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/lib/amd64/libjsoundalsa.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/lib/amd64/libsplashscreen.so
/usr/share/applications/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64-policytool.desktop
/usr/share/icons/hicolor/16x16/apps/java-1.8.0.png
/usr/share/icons/hicolor/24x24/apps/java-1.8.0.png
/usr/share/icons/hicolor/32x32/apps/java-1.8.0.png
/usr/share/icons/hicolor/48x48/apps/java-1.8.0.png

(补充:可以看出这里是安装目录:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre)

4.5.3 在 Hadoop 的配置文件里指定 java-openjdk-devel 和 Hadoop 配置文件的安装位置
# vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

将以下内容:

......
54 # export JAVA_HOME=
......
68 # export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
......

修改为:

......
54 export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre"
......
68 export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
......

步骤五:启动 Hadoop

# /usr/local/hadoop/bin/hadoop
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class

  OPTIONS is none or any of:

buildpaths                       attempt to add class files from build tree
--config dir                     Hadoop config directory
--debug                          turn on shell script debug mode
--help                           usage information
hostnames list[,of,host,names]   hosts to use in slave mode
hosts filename                   list of hosts to use in slave mode
loglevel level                   set the log4j level for this command
workers                          turn on worker mode

  SUBCOMMAND is one of:


    Admin Commands:

daemonlog     get/set the log level for each daemon

    Client Commands:

archive       create a Hadoop archive
checknative   check native Hadoop and compression libraries availability
classpath     prints the class path needed to get the Hadoop jar and the required libraries
conftest      validate configuration XML files
credential    interact with credential providers
distch        distributed metadata changer
distcp        copy file or directories recursively
dtutil        operations related to delegation tokens
envvars       display computed Hadoop environment variables
fs            run a generic filesystem user client
gridmix       submit a mix of synthetic job, modeling a profiled from production load
jar <jar>     run a jar file. NOTE: please use "yarn jar" to launch YARN applications, not this
              command.
jnipath       prints the java.library.path
kdiag         Diagnose Kerberos Problems
kerbname      show auth_to_local principal conversion
key           manage keys via the KeyProvider
rumenfolder   scale a rumen input trace
rumentrace    convert logs into a rumen trace
s3guard       manage metadata on S3
trace         view and modify Hadoop tracing settings
version       print the version

    Daemon Commands:

kms           run KMS, the Key Management Server

SUBCOMMAND may print help when invoked w/o parameters or with -h.

[内容] Linux 网络的显示 (网关 IP 地址)

内容一:使用命令来显示现有网关 IP 地址

1.1 通过 route 命令

# route -n

1.2 通过 ip 命令

# ip route show

1.3 通过 traceroute 命令

# traceroute eternalcenter.com

(补充:输出的第一行就是现在的网关)

1.4 通过 netstat 命令

# netstat -nr

1.5 通过 nmcli 命令

# nmcli connection <network card name> | grep ipv4.ga

内容二:通过网路配置文件来显示现有网关 IP 地址

如果是 Rocky Linux & RHEL:

# cat /etc/sysconfig/network-scripts/ifcfg-<network card name>

如果是 openSUSE & SLES:

# cat /etc/sysconfig/network/routes

[内容] Linux 日志消息优先级简介

内容一:系统日志的存放路径

/var/log/messages

内容二:显示系统对应优先级的日志的方法

# grep -i <priority> /var/log/messages

内容三:日志消息的优先级

级别关键字描述 内容
0 EMERG 致命级 (KERN_EMESG) 紧急,系统本身已经无法再运行必须马上拯救
1 ALERT 警戒级 (KERN_ALERT) 警报,系统出现了重大错误必须马上处理的情况
2 CRIT 临界级 (KERN_CRIT) 严重,系统出现了严重的情况
3ERR 错误级 (KERN_ERR) 错误,系统出现了错误的情况
4 WARNING告警级 (KERN_WARN) 警告,系统出现了需要警告的情况
5 NOTICE 注意级 (KERN_NOTICE) 注意,系统出现了需要注意的情况
6 INFO 通知级 (KERN_INFO) 信息,系统出现了一些情况
7 DEBUG 调试级 (KERN_DEGUG) 调试,系统出现了程序或服务调试的情况

(注意:优先级是按照从紧急到无所谓的顺序进行排列的)

[内容] CentOS Linux & RHEL YUM 的使用 (让某 1 个软件不被更新)

内容一:通过命令实现更新某 1 个软件(补丁)包以外其他所有软件(补丁)包的方法

# yum -x httpd* updaten

(补充:这里以更新除了名字以 httpd 开头外的所有软件包为例)

(注意:这种方法只在本次输入时有效)

或者:

# yum --exclude=kernel* update

(补充:这里以更新除了名字以 kernel 开头外的所有软件包为例)

(注意:这种方法只在本次输入时有效)

内容二:通过配置文件实现更新某 1 个软件(补丁)包以外其他所有软件(补丁)包的方法

2.1 修改 YUM 的配置文件

# vim /etc/yum.conf

添加以下内容:

......
exlude=mysql* kernel*

(补充:多个不需要升级的软件可以用空格隔开)

(注意:这里修改的配置文件可能是 /etc/yum.conf 也可能是 /etc/yum/yum.conf)

2.2 使用 YUM 升级除某 1 个软件包外的所有软件包

# yum update

内容三:通过 yum-versionlock 实现更新某 1 个软件(补丁)包以外其他所有软件(补丁)包的方法

3.1 安装 yum-versionlock

# yum install yum-versionlock

3.2 使用 yum-versionlock 锁定某 1 个软件包

3.2.1 使用 yum-versionlock 锁定某 1 个软件包
# yum versionlock httpd*

(补充:这里以锁定名字以 httpd 开头的所有软件包为例)

3.2.1 使用 YUM 升级除某 1 个软件包外的所有软件包
# yum update

3.4 显示通过 yum-versionlock 锁定的软件包

# yum versionlock list

3.5 取消通过 yum-versionlock 锁定的软件包

3.5.1 取消通过 yum-versionlock 锁定的某 1 个软件包
# yum versionlock delete httpd*

(补充:这里以解除锁定名字以 httpd 开头的所有软件包为例)

3.5.2 取消通过 yum-versionlock 锁定的所有软件包
# yum versionlock clear

碧空之歌

碧蓝的天空如此清澈,一眼望去似乎就找不到任何瑕疵。但碧空下的生命却总是带着缺失而生,需要各种感情和经历将它填满才算完整。而那些带着哭啼声降临于世的生灵们,又会为自己谱写一曲怎样的永恒生命之歌?

饥饿、自私、恐惧、怜悯、开心……每一次来自生物本能的潜意识行为和潜意识感受,一点点地组成了真实却又常被忽略的本我。

成就、事业、自我价值、性格取向、自我目标……每一次对自己的探索、认知、认同和抉择,逐渐组成了真实却又含糊不清的自我。

自由、平等、博爱、道德、信仰……个人与世界之间到底是怎样的一种关系?每次对此的理解、评判和选择,逐步形成了多种多样、概括不清并且会为此流血冲突的超我。

在自私和平等中来回冲撞遍体鳞伤的雅典人,通过民主投票的制度控制他人和自己贪得无厌的心魔。

在自由和死亡面前驻足不前的斯巴达人,依靠荣誉获得着自我认同,并最终使用生命去成就自由。

前人们沧桑背影后的五线谱如此多样,生灵们又打算用哪一种旋律创造出怎样的一首新的优美之歌,能够像亚里士多德、黑格尔的歌一样,让其他的人也会充满希望、认同和感动地轻轻跟着哼。