一文弄懂hadoop与jdk的安装(亲测有效!)

一文弄懂hadoop与jdk的安装(亲测有效!)

提示:有问题可以私信我或者加我QQ:932403551



前言

最近的在学习hadoop和spark的时候,使用到了需要安装hadoop的情况,但是差了很多有关的博客,发现博客里面的内容有些都只是部分对的,所以在踩坑了好久之后,终于决定自己去写一篇博客,来教一下大家怎样正确的安装hadoop和jdk


一、安装好SSH

SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH由客户端和服务端的软件组成:服务端是一个守护进程,它在后台运行并响应来自客户端的连接请求;客户端包含ssh程序以及像scp(远程复制)、slogin(远程登录)、sftp(安全文件传输)等其他的应用程序。

为什么在安装Hadoop之前要配置SSH呢?这是因为, Hadoop名称节点(NameNode)需要启动集群中所有机器的Hadoop守护进程,这个过程需要通过SSH登录来实现。Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录集群中的每台机器,需要将所有机器配置为“名称节点可以无密码登录它们”。

Ubuntu默认已安装了SSH客户端,因此,还需要安装SSH服务端,在Linux的终端中执行以下命令:

$sudo apt-get install openssh-server

成功安装后,就可以使用如下的命令登录本机

$ssh localhost

执行好该命令后就会出现第一次登录出现的提示信息, 这个时候输入yes,再输入本机的密码,就可以登录到本机了。
大致如下
这里在理解上会有一点“绕弯”。也就是说,原本登录Linux系统以后,就是在本机上,这时,在终端中输入的每条命令都是直接提交给本机去执行,然后,又在本机上使用SSH方式登录到本机,这时,在终端中输入的命令,是通过SSH方式提交给本机处理。如果换成包含两台独立计算机的场景,SSH登录会更容易理解。例如,有两台计算机A和B都安装了Linux系统,计算机B上安装了SSH服务端,计算机A上安装了SSH客户端,计算机B 的IP地址是59.77.16.33,在计算机A上执行命令ssh59.77.16.33,就实现了通过SSH方式登录计算机B上面的Linux系统,在计算机A的Linux终端中输入的命令,都会提交给计算机B上的Linux系统执行,即在计算机A上操作计算机B中的Linux系统。现在,只有一台计算机,就相当于计算机A和B都在同一台机器上,所以,理解起来就会有点“绕弯”。

由于这样登录需要每次输入密码,所以,需要配置成SSH无密码登录会比较方便。在Hadoop集群中,名称节点要登录某台机器(数据节点)时,也不可能人工输入密码,所以,也需要设置成SSH无密码登录。

首先输入命令exit退出刚才的SSH,就回到了原先的终端窗口;然后可以利用ssh-keygen生成密钥,并将密钥加入授权中,命令如下:

$cd ~/.ssh/ #若没有该目录,先执行一次ssh localhost
$sh-keygen -t rsa #会有提示,按Enter键即可
$cat./ id_rsa. pub>>./ authorized_keys #加入授权

此时,再执行ssh localhost命令,无须输入密码就可以直接登录了,如图所示
ssh成功登录

二、安装java环境

由于Hadoop本身是使用Java语言编写的,因此, Hadoop的开发和运行都需要Java的支持,对于Hadoop 3.1.3而言,要求使用JDK1.8或者更新的版本。
访问Oracle官网下载JDK1.8安装包
(刚刚说想在阿里云里面分享的,但是好像不支持这种文件的分享QAQ)

这里假设下载得到的JDK安装文件保存在Ubuntu系统的/home/hadoop/Downloads/目录下。
执行如下命令创建/usr/lib/jvm目录用来存放JDK文件:

$cd /usr/lib
$sudo mkdir jvm

执行如下命令对安装文件进行解压缩:

$cd ~ #进入hadoop用户的主目录
$cd Downlode
$sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm

下面继续执行如下命令,设置环境变量:

$vim /.bashrc

上面命令使用vim编辑器打开了hadoop这个用户的环境变量配置文件,在这个文件的开头添加如下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存. bashrc文件并退出vim编辑器。然后,可继续执行如下命令让. bashrc文件的配置立即生效:

$source ~/.bashrc

这时,可以使用如下命令查看是否安装成功:

$java -version

如果能够在屏幕上返回如下信息,则说明安装成功:
成功图片
至此,就成功安装了Java环境。下面就可以进入Hadoop的安装。


三、 Hadoop安装

hadoop目前有三种的安装模式,分别是

  • 单机模式
  • 伪分布式
  • 分布式

,目前我正在安装是伪分布式,所以我只会介绍伪分布式的安装方式。

3.1 下载安装文件

我采用的Hadoop版本是3.1.3,可以到Hadoop官网下载安装文件,载的方法是,在Linux系统中(不是在Windows系统中),打开浏览器,一般自带了火狐(FireFox)浏览器。打开浏览器后,访问官网,下载hadoop-3.1.3. tar. gz。火狐浏览器默认会把下载文件都保存到当前用户的下载目录,由于我是采用hadoop用户登录Linux系统,所以, hadoop-3.1.3. tar. gz文件会被保存到“/home/hadoop/下载/”目录下。

需要注意的是,如果是在Windows系统下载安装文件hadoop-3.1.3. tar. gz,则需要通过FTP软件上传到Linux系统的“/home/hadoop/下载/”目录下。

下载完安装文件后,需要对文件进行解压。按照Linux系统使用的默认规范,用户安装的软件一般都是存放在/usr/local/目录下。使用hadoop用户登录Linux系统,打开一个终端,执行如下命令:

$sudo tar-zxf ~/下载/hadoop-3.1.3.tar.gz -C /usr/local #解压到/usr/local目录中cd/usr/local/
$sudo mv ./hadoop-3.1.3/ ./hadoop #将文件夹名改为hadoop
$sudo chown-R hadoop[你的本机用户名] ./hadoop #修改文件权限

Hadoop解压后即可使用,可以输入如下命令来检查Hadoop是否可用,成功则会显示Hadoop版本信息:

$cd /usr/local/hadoop
$./bin/hadoop version

如下图所示
成功安装

3.2 伪分布式配置

Hadoop可以在单个节点(一台机器)上以伪分布式的方式运行,同一个节点既作为名称节点(NameNode),也作为数据节点(DataNode),读取的是HDFS中的文件.

1.修改配置文件

需要配置相关文件,才能够让Hadoop在伪分布式模式下顺利运行。Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/目录下,进行伪分布式模式配置时,需要修改两个配置文件,即core-site. xml和hdfs-site. xml。
可以使用vim编辑器打开core-site. xml文件,它的初始内容如下:

<configuration>
</configuration>

修改以后, core-site. xml文件的内容如下:

<configuration>
	<property>
		<name>hadoop. tmp. dir</name>
		<value>file:/usr/local/hadoop/tmp</value>
		<description>Abase for other temporary directories.</description></property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
</configuration>

在上面的配置文件中, hadoop. tmp. dir用于保存临时文件,若没有配置hadoop . tmp. dir这个参数,则默认使用的临时目录为/tmp/hadoo-hadoop,而这个目录在Hadoop重启时有可能被系统清理掉,导致一些意想不到的问题,因此,必须配置这个参数。fs.defaultFS这个参数用于指定HDFS的访问地址,其中,9000是端口号。

同样,需要修改配置文件hdfs-site. xml,修改后的内容如下:

<configuration>
	<property>
		<name>dfs. replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs. namenode. name. dir</name>
		<value>file:/usr/local/hadoop/tmp/dfs/name</value>
	</property>
	<property>
		<name>dfs. datanode. data. dir</name>
		<value>file:/usr/local/hadoop/tmp/dfs/data</value>
	</property>
</configuration>

在hdfs-site. xml文件中, dfs. replication这个参数用于指定副本的数量,因为,在HDFS中,数据会被冗余存储多份,以保证可靠性和可用性。但是,由于这里采用伪分布式模式,只有一个节点,所以,只可能有一个副本,设置dfs. replication的值为1。dfs. namenode. name.dir用于设定名称节点的元数据的保存目录, dfs. datanode. data. dir用于设定数据节点的数据的保存目录,这两个参数必须设定,否则后面会出错。

需要指出的是, Hadoop的运行方式(如运行在单机模式下还是运行在伪分布式模式下)是由配置文件决定的,启动Hadoop时会读取配置文件,然后根据配置文件来决定运行在什么模式下。因此,如果需要从伪分布式模式切换回单机模式,只需要删除core-site. xml中的配置项即可。

2 执行名称节点格式化

修改配置文件以后,要执行名称节点的格式化,命令如下

$cd /usr/local/hadoop
$./bin/hdfs namenode -format

如果格式化成功,会看到successfully formatted的提示信息

如果在执行这一步时提示错误信息“ Error:JAVA_HOME is not set and could not befound ”,则说明之前设置JAVA_HOME环境变量时,没有设置成功,要按前面的内容介绍先设置好JAVA_HOME变量,否则,后面的过程都无法顺利进行。

3 启动hadoop

执行下面命令启动Hadoop:

$cd/usr/local/hadoop
$./sbin/start-dfs. sh #start-dfs.sh是一个完整的可执行文件,中间没有空格

如果出现下图的结果即可
成功
如果启动Hadoop时遇到输出非常多“ssh:Could not resolve hostname xxx”的异常情况,

这并不是SSH的问题,可以通过设置Hadoop环境变量来解决。首先,按Ctrl+C键中断启动过程;然后,使用vim编辑器打开文件~/. bashrc,在文件最上边的开始位置增加如下两行内容(设置过程与JAVA_HOME变量一样,其中,HADOOP_HOME为 Hadoop的安装目录):

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

保存该文件以后,务必先执行命令source~/. bashrc使变量设置生效;然后,再次执行命令./sbin/start-dfs.sh启动Hadoop。

Hadoop启动完成后,可以通过命令ips判断是否成功启动,命令如下:

$jps

若成功启动,则会列出进程NameNode、DataNode和SecondaryNameNode。如果看不到SecondaryNameNode进程,先运行命令./sbin/stop-dfs. sh关闭Hadoop相关进程;然后再次尝试启动。如果看不到NameNode或DataNode进程,则表示配置不成功,仔细检查之前的步骤,或通过查看启动日志排查原因。

通过start-dfs. sh命令启动Hadoop以后,就可以运行MapReduce程序处理数据,此时是对HDFS进行数据读写,而不是对本地文件进行数据读写。

但是基本上安装这样的顺序进行安装,就不会出现错误,如果真的出现错误,有很大的概率是修改配置的时候代码输入错误的,所以要认真的看一下!,是在不行的话建议useradd新建一个用户来建立环境!


总结

对于的hadoop安装的分享就到这里了,大家是在遇到了什么问题,也欢迎大家私信我,希望大家给个关注,蟹蟹啦!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜狗原来是我自己

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值