Hadoop安装与配置

前言

有错误请指正,海涵。
使用的环境:Ubuntu18.04.1 LTS+Windows双系统(故而不是安装在虚拟机上的)
Hadoop3.2.0(因为选择了当下比较新的版本所以也是有些东西和之前不同)
JDK1.8.0_201

下载JDK

进Oracle官网下载JDK
在这里插入图片描述
接受协议后选择自己的系统下载jdk,我是64位所以就选64位了。
下载后解压到/usr/lib下

tar -zxvf jdk-8u181-linux-x64.tar.gz  -C /usr/lib    #解压文件并复制到 /usr/lib

配置java环境变量

解压jdk并不够,还需要让系统知道你安装了jdk
配置环境变量的方法有两种,这里我就只说一种。

sudo vim /etc/profile #使用root权限编辑profile,vim是一个文本编辑器,不懂使用vim可以百度一下
#在profile文件末尾加上以下代码
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_201     
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:$JAVA_HOME/bin

保存以后系统还不知道这些配置,使用source命令更新

source /etc/profile

这样java环境就配置好了,可以输入java -version命令看看是否成功,不成功会显示找不到命令。

下载Hadoop

首先安装Ubuntu,这里就不赘述了。
下载Hadoop3.2.0
进入hadoop官网
在这里插入图片描述
点击Download
在这里插入图片描述
点击3.2.0那一行的binary
在这里插入图片描述
图中所示的链接随便点击一个就可以开始下载了。
我Linux的用户是czq,那么我就在/home/czq下新建一个hadoop文件夹放hadoop文件。
将hadoop文件解压

tar -zxvf hadoop-3.2.0.tar.gz  -C /home/czq/hadoop    #解压文件并复制到/home/czq/hadoop

配置Hadoop环境变量

首先配置hadoop环境变量,与配置java环境变量是一样的
编辑profile文件
文件最后修改为

export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/home/czq/hadoop/hadoop-3.2.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

修改hostname

修改主机名,原先一般为localhost或者在安装时以及自定义

sudo vim /etc/hostname  #编辑hostname

文件中只有一行,是当前主机的名字,改为你想要的名字。我的是Ubuntu01。

修改hosts

hosts文件里面存放的是其他主机的IP和主机名,其实就是告诉计算机,某个机器名对应的id是什么。
比如你现在有另一台主机,主机名为ubuntu02,ip为192.168.1.2,那么你在hosts中加一行

192.168.1.2   hosts

修改/hadoop3.2.0/etc/hadoop下的配置文件

以下所有是xml文件的,内容都写在《configuration》里面
第一个hadoop-env .sh

在此文件中,有这么一段备注:

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
# export JAVA_HOME=

在此备注的下面一行写入jdk路径,这一段就是告诉Hadoop,java环境配置在那里。

 export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_201

建议向上面一样将JAVA_HOME写死,而不要写$JAVA_HOME,不然可能找不到路径。
第二个core-site.xml

<!-- 指定hdfs的文件系统,以及谁是namenode -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Ubuntu01:9000</value>
    </property>
    <!-- hadoop临时文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/czq/hadoop/hadoop-3.2.0/tmp</value>
</property>

第三个hdfs-site.xml

 <!-- 指定HDFS副本的数量,我这里暂时设为1,因为我只有一台机子,建议设置为3 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
</property>
<!-- 指定secondary namenode,(uri)host:50090 -->
<property>
         <name>dfs.secondary.http.address</name>
         <value>localhost:50090</value>
</property>

第四个mapred-site.xml
老版本的可能是mapred-site.xml.template,把名字改成mapred-site.xml

mv mapred-site.xml.template mapred-site.xml

加入以下内容

<!-- 指定mapreduce运行在yarn上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

第五个yarn-site.xml
在命令行下输入如下命令,并将返回的地址复制。

hadoop classpath
<!-- 指定YARN的ResourceManager -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>Ubuntu01</value>
</property>
    <!-- reducer获取数据的方式 ,当前只有mapreduce_shuffle这种方式-->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
 </property>
 <!-- 将 hadoop classpath输出的信息粘贴到value中,指定yarn需要的classpath,这里和之前的版本不同,之前的版本不需要-->
 <property>
        <name>yarn.application.classpath</name>
        <value>/home/czq/hadoop/hadoop-3.2.0/etc/hadoop:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/common/lib/*:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/common/*:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/hdfs:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/hdfs/lib/*:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/hdfs/*:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/lib/*:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/*:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/yarn:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/yarn/lib/*:/home/czq/hadoop/hadoop-3.2.0/share/hadoop/yarn/*</value>
    </property>

第六个workers
以前的版本不叫座workers,叫做slaves
一个翻译是工作者,一个是奴隶。可能官方觉得不好听就改了。
其实就是指定datanode有那些
比如你有三个机子,ubuntu01是namenode,ubuntu02和ubuntu03是datanode,那么,文件内容是这样的:

ubuntu02
ubuntu03

关闭防火墙

不关防火墙,没办法通讯。其他教程都是这样教的,我也不知道是不是一定要这样,比较反感。

sudo ufw status #查看防火墙状态
sudo ufw disable #关闭防火墙

安装SSH

ssh用于远程连接
输入以下命令安装ssh

sudo apt-get install openssh-server

可以试一下装好了没有

ssh localhost

配置SSH免密码远程登录

现在的Hadoop版本好像默认是免密登录,不配置会报错。(好像,因为我报错了)
ssh有两种方式登录,一种是输入密码,还有一种就是配置密钥。
具体原理就不赘述了,感兴趣就去百度一下。
大致步骤是这样的:
1.生成公钥和私钥。

#生成密钥,并存在~/.ssh里面
ssh-keygen -t rsa
#输入后疯狂回车,一切默认,不要输入密码,不然就白作了。

2.把公钥发送给需要远程登录的主机
方法1:

ssh-copy-id -i Ubuntu1

方法2:

#进入~/.ssh,将id_rsa.pub发送给远程主机
scp id_rsa.pub ubuntu02:/home/czq/

远程主机将公钥加入信任列表

将id_rsa.pub加入/.ssh文件夹下的authorized_keys文件中。
因为一开始authorized_keys这个文件是没有的,所以我们要自己创建。

touch authorized_keys  #创建authorized_keys
chmod 600 authorized_keys  #修改文件权限
cat /home/czq/id_rsa.pub >> authorized_keys #将id_rsa.pub文件内容追加到authorized_keys
cd /home/czq #进入 /home/czq
rm id_rsa.pub #删除在个文件,因为已经不用了。

格式化Hadoop

需要注意的是:格式化会在hadoop根目录创建文件夹,所以需要写权限。
所以你可以给文件夹加权限,或者用root权限

hadoop namenode -format

运行Hadoop

start-dfs.sh  #运行HDFS
start-yarn.sh #运行yarn
jps #查看Hadoop进程

查看集群管理界面

一个是localhost:9870,需要注意的是,老版本的端口号是50070,而不是9870
在这里插入图片描述

还有一个管理mapreduce的,localhost:8088
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值