阿里云轻量级服务器ubuntu18.04配置Java1.8伪分布式安装Hadoop2.7.x

前言

Hadoop 在大数据技术体系中的地位至关重要,Hadoop 是大数据技术的基础,对 Hadoop 基础知识的掌握的扎实程度,会决定在大数据技术道路上走多远。鉴于当前网络中对于云端配置Hadoop的资料极少,特写此篇,供诸位借鉴。

本文分为以下四个部分。

第一部分:修改主机名和添加新用户
阿里云的服务器主机名都是乱码般的字符串,为了方便后期操作,建议将主机名进行修改。
在使用 Ubuntu 系统的过程中,一般不建议直接使用 root 用户,建议新建一个或多个普通用户,平时的大数据实验操作都使用普通用户登录 Ubuntu 系统。

第二部分:Java1.8的下载和安装
无论是 Hadoop 还是 Spark ,都需要 Java 运行环境,因此,需要在 Ubuntu 系统中安装 Java,Java1.8(即 Java8 )是当前较为稳定的版本,所以安装Hadoop建议使用Java1.8。

第三部分:Hadoop的下载和伪分布式安装
学习 Hadoop 一般是在伪分布式模式下进行。这种模式是在一台机器上各个进程上运行 Hadoop 的各个模块,伪分布式的意思是虽然各个模块是在各个进程上分开运行的,但是只是运行在一个操作系统上的,并不是真正的分布式。

第四部分:启动并测试是否安装成功
安装完成后,输入一些基本命令,查看 Hadoop 能否正常运行。

第一部分:修改主机名和添加新用户

购买了阿里云的云服务器以后,就可以打开浏览器,通过网页访问阿里云官网,通过网页中的管理控制台----远程连接,使用 root 用户来登录 Ubuntu 系统。亦可以使用默认的admin用户登录,输入 sudo su root 命令切换到 root 用户。

1. 修改主机名

进入/etc/hostname 修改主机名输入命令:

root@iZuf6bn9mrntxqewds3af5Z: vi /etc/hostname

将 hostname 文件中原主机名替换为想要修改的主机名,重启后生效。

同时,修改 hosts 文件,这是修改 ip 与主机名的映射关系:

root@iZuf6bn9mrntxqewds3af5Z: vi /etc/hosts
127.0.0.1       localhost
# The following lines are desirable for IPv6 capable hosts
# ::1	localhost	ip6-localhost	ip6-loopback
# ff02::1	ip6-allnodes
# ff02::2	ip6-allrouters

10.0.0.120	iZ2ze4nf65q72vlwsbtwzkZ

172.17.23.204	iZuf6bn9mrntxqewds3af5Z	ubuntu

为了防止其他影响,我这里把 ipv6 给注释了,重点在修改最后一行:
172.17.23.204 是私网 IP ,不用修改
iZuf6bn9mrntxqewds3af5Z 是原主机名,不用修改
把原主机名后面的内容改为修改后的主机名(ubuntu)

2. 添加新用户

添加名为 hadoop 的新用户:

root@ubuntu: sudo useradd -m hadoop -s /bin/bash

为新用户设置密码:

root@ubuntu: sudo passwd hadoop

增加管理员权限:

root@ubuntu: sudo adduser hadoop sudo

到此,新用户已经添加,输入:

root@ubuntu: su hadoop

切换到普通用户(我这里是 hadoop )来进行接下来的操作。

第二部分:Java1.8的下载和安装

输入命令 java -version 可查看 java 是否安装以及 java 版本,如未安装,会出现以下内容:

hadoop@ubuntu: java
Command 'java' not found, but can be installed with:

sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless

这里的 default-jre 是 java11 版本,而我们要下载 java8 ,所以选择第三个命令。
在下载前,先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。

hadoop@ubuntu: sudo apt update
hadoop@ubuntu: sudo apt upgrade

接下来就可以安装 java8 了,java 的默认安装路径为 /usr/lib/jvm

hadoop@ubuntu: sudo apt install openjdk-8-jre-headless

安装完成后,再次输入 java -version 命令:

hadoop@ubuntu: java -version

会出现jdk的版本信息,证明安装成功。

第三部分:Hadoop的下载和伪分布式安装

1. 配置ssh免密登录

Hadoop集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

hadoop@ubuntu: sudo apt-get install openssh-server

安装后,可以使用如下命令登陆本机:

hadoop@ubuntu: ssh localhost

首次登录会有如下提示:

hadoop@ubuntu: ssh localhost
The authenticity of host 'localhost(127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:x/4hzoxqtxUzioiQl5zMrOSpFEiVSBiCteBWqec3FwQ.
Are you sure you want to continue connecting (yes/no)?

输入 yes 。然后按提示输入密码 ,这样就登陆到本机了。

但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

hadoop@ubuntu: exit                           # 退出刚才的 ssh localhost
hadoop@ubuntu: cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
hadoop@ubuntu: ssh-keygen -t rsa              # 会有提示,都按回车就可以
hadoop@ubuntu: cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了,屏幕上会显示如下信息:

hadoop@ubuntu:~$ ssh localhost
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-68-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

Welcome to Alibaba Cloud Elastic Compute Service !

Last login: Tue Nov  5 13:31:19 2019 from 123.234.123.12(这里是本地的域名)
hadoop@ubuntu:~$ 

2. 下载并进行hadoop2.7.3的伪分布式配置

下载:

下载方法一:官网下载

下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz
使用命令:

hadoop@ubuntu: wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz

hadoop 压缩包会下载到当前目录下。
下载方法二:百度网盘下载
链接:https://pan.baidu.com/s/1vx8Q0GMFkBjjw38Uc2aV6Q
提取码:bu3g
先下载到本地,然后在 Windows 的 cmd 中使用 scp 命令上传到服务器:

C:\Users\123> scp D:\download\hadoop-2.7.3.tar.gz hadoop@106.15.321.142:/usr/

注意:scp 传输必须输入文件的绝对路径。

解压:

下载完成,解压到 /usr 目录下:

hadoop@ubuntu: tar -zxvf hadoop-2.7.3.tar.gz -C /usr/

修改 hadoop-2.7.3 文件夹权限:

hadoop@ubuntu: sudo chown -R hadoop:hadoop /usr/hadoop-2.7.3

解压后,配置环境变量:

hadoop@ubuntu: sudo vi /etc/profile

在末尾处添加以下内容:

export HADOOP_HOME=/usr/hadoop-2.7.3
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
###enable hadoop native library
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

将修改后的环境变量应用于全局:

hadoop@ubuntu: source /etc/profile

配置 /home/.bashrc

hadoop@ubuntu: vi ~/.bashrc

末尾处添加以下内容

export HADOOP_HOME=/usr/hadoop-2.7.3
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

将修改后的用户变量启用:

hadoop@ubuntu: source ~/.bashrc
修改 hadoop 配置文件:

先转到 hadoop 的配置文件目录下:

hadoop@ubuntu: cd /usr/hadoop-2.7.3/etc/hadoop
修改 core-site.xml
hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ sudo vi core-site.xml

修改为:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>file:/usr/hadoop-2.7.3/tmp</value>
		<description>Abase for other temporary directories.</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://ubuntu:9000</value>
	</property>
</configuration>
修改 hdfs-site.xml
hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ sudo vi hdfs-site.xml

修改为:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/hadoop-2.7.3/tmp/dfs/name</value>	
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/usr/hadoop-2.7.3/tmp/dfs/data</value>			
	</property>
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
		<description>
			If "true", enable permission checking in HDFS.
			If "false", permission checking is turned off,
			but all other behavior is unchanged.
			Switching from one parameter value to the other does not change the mode,
			owner or group of files or directories.
		</description>
	</property>
	<property>
		<name>dfs.client.use.datanode.hostname</name>
		<value>true</value>
		<description>only config in clients</description>
	</property>
</configuration>
修改 mapred-site.xml

先将自带模板mapred-site.xml.template复制一份为mapred-site.xml

hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ sudo cp mapred-site.xml.template mapred-site.xml

再修改mapred-site.xml

hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ sudo vi mapred-site.xml

修改为:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>
		<name>mapred.job.tracker</name>
		<value>ubuntu:9001</value>
	</property>
</configuration>
修改 yarn-site.xml
hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ sudo vi yarn-site.xml

修改为:

<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>

<!-- Site specific YARN configuration properties -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<!-- 指定YARN的老大(ResourceManager)的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>ubuntu</value>
	</property>
</configuration>
修改 hadoop-env.sh
hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ sudo vi hadoop-env.sh

添加 JAVA_HOME 和 Hadoop相关配置。

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_CONF_DIR=/usr/hadoop-2.7.3/etc/hadoop
export  HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export  HADOOP_HOME=/usr/hadoop-2.7.3
export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

至此,Hadoop的配置已基本完成。(此处应该有掌声)

第四部分:测试Hadoop安装是否成功

启动前,先将namenode格式化,来创建文件存储路径。
格式化前可以手动创建tmp路径,但一定要与配置文件相符。

hadoop@ubuntu: sudo mkdir /usr/hadoop-2.7.3/tmp

格式化namenode:

hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ hdfs namenode -format

第一次格式化时,需要输入几次Y或者yes,根据提示进行即可。
如果免密配置不成功,那么在格式化时,可能要输入若干次密码。

以下是 namenode 格式化成功的结尾处代码:

19/11/03 10:50:28 INFO util.ExitUtil: Exiting with status 0
19/11/03 10:50:28 INFO namenode.NameNode: SHUTDOWN MSG: 
/************************************************************
SHUTDOWN MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$

注意,返回值为 0,代表成功。

现在,你可以输入那神圣的(-_-)Hadoop启动命令(傲视一切):

hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ start-all.sh

根据提示,该y就y,该输入yes输入yes,该输入密码输入密码!

启动完成后,输入 jps 可查看当前进程,如下:

hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ jps
3763 SecondaryNameNode
16963 Jps
4052 NodeManager
3917 ResourceManager
3405 NameNode
3566 DataNode
hadoop@ubuntu:/usr/hadoop-2.7.3/etc/hadoop$ 

进程有6个,你就成功了,证明你耗时甚久的努力没有白费,👍
不过,你会突然发现 没有 jps 命令,在安装 Hadoop 这条道上走了这么久,我相信你也知道该如何去做了,拿起板砖,砸向显示屏 按照提示,输入命令下载即可。
因为 hadoop 服务是配置在云端的,所以在任何有网络的设备上都可以访问你的 hadoop ,在浏览器输入 服务器的公网ip:端口号 即可,例如: 106.15.243.31:50070 106.15.243.31:8088
注意:阿里云轻量级服务器默认情况下只开了基本端口,如 80, 22 等,所以先去阿里云官网的管理控制台打开需要的端口,如50070,50075,9000等,但是不建议打开8088,因为yarn的漏洞,打开8088后有很大风险中挖矿病毒(一种把你的cpu跑满导致服务器崩溃的病毒)。

小结

其实,文中的一些配置在使用客户端操作时并不需要,当使用 Javaapi 对 hdfs 进行操作时,如不按此配置,可能会出现一系列问题。有些坑,一个人踩过就够了,比如说:在配置 hadoop 时,如果将主机名修改为公网 ip ,会发现 namenode 或 datanode 不能正常启动,全部换成私网 ip ,在使用 javaapi 时会出现域名无法解析的问题,所以,使用主机名才是王道。
若按此篇进行配置,在之后的 hbase 安装和配置中也会减少不少麻烦。

个人体验:

第一次在阿里云配置 Hadoop ,本以为与本地虚拟机中安装相差无二,结果发现,有一些地方,在本地安装可以成功,在阿里云端,就是失败。
有些失败的问题,到网络上到处搜索,都找不到现成的解决方案,没有办法,只能凭借自己的猜测,一个个进行蛮力测试,碰对了,问题就解决。所以,在阿里云中调试成功一款软件,有时候还是非常耗费的。我知道,其他学习者一样会遇到我踩过的坑,所以,我一边调试,一边记录,写出此篇,希望对其他学习者有所帮助。目前,目前网上关于云服务器上 Hadoop 的安装教程极少,而且很多学习者还不会使用云端,以后,定会有一些学习者产生和我一样的需求,到那个时候,相信这篇指南能够帮学习者节省不少时间。

另:博主也是菜鸡一名,才疏学浅,希望各位大佬批评指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值