前言
hadoop是其他大数据框架的基础运行环境,尤其是hdfs,是其他大数据框架的基础存储载体,因此学习和掌握hadoop对学习大数据很有必要
haddop常用的3种运行模式包括:
- 本地模式 ,单机运行,只是用来演示一下官方案例。生产环境不用
- 伪分布式模式,也是单机运行,但具备Hadoop集群所有功能,一台服务器模拟一个分布式的环境
- 完全分布式模式:多台服务器组成分布式环境。生产环境使用
本篇将基于centos7系统,在腾讯云环境快速搭建一个单节点的haddop运行环境
前置准备
- 一台配置好网络连接(可ping通宿主机和外网)的CentOS 7系统的虚拟机 【本篇使用腾讯云服务器】
- 连接宿主机和虚拟机的Xftp
- JDK 1.8版本或1.8版本以上的安装包
- hadoop 3.1.3 版本的安装包,hadoop: http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.0.0/
一、安装JDK
这个想必大家都会吧,将下载好的linux版的JDK上传到服务器的指定的目录下,解压,然后配置下即可
配置到 profile文件中即可
vi /etc/profile
export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
保存并退出之后,执行下: source /etc/profile ,最后再使用: java -version 查看下安装的JDK
二、配置hadoop前置准备环境
1、更新yum源
sudo yum -y update
2、配置主机IP的映射
在搭建完全分布式集群时,这一步一定而且是必不可少的,执行命令 : vi /etc/hosts ,做一下IP和主机名称的映射
然后执行命令, service network restart ,重启下网络
3、 创建 hadoop 用户
通常来说,安装软件时,登录使用的多数是 root 用户,但这样并不安全。因此,在安装Hadoop前,我们最好创建一个 指定的用户,比如这里就创建一个名为 "hadoop"的用户【也可以自定义其他名字】 ;
关于这一点,本人在一开始安装的时候直接使用 root用户安装,在后续安装启动过程中一堆的报错,然后四处找解决方案,甚是麻烦,所以有必要提醒各位安装的同学,最好使用一个新用户
以root用户登录,然后打开一个终端,输入以下命令创建 hadoop 用户并设置密码
useradd hadoop # 创建hadoop用户
passwd hadoop # 设置hadoop用户的密码,按提示输入两次密码
注意:密码需输两次,若提示无效,说明设置的密码等级过低不安全,但你不想换密码的话,也可以继续输入密码进行确定
4、修改 第一步中“hadoop” 用户权限
hadoop 用户是普通用户,系统为了安全,对普通用户的一些操作权限做了限制,这样一来,我们在做配置环境的时候就不是很方便,因此需要为 hadoop 用户添加管理员的权限
- 以root用户登录打开一个终端窗口,输入以下命令为hadoop用户增加管理员的权限
vi /etc/sudoers
找到root ALL=(ALL) 这一行,然后复制一个一模一样的行,名字改为hadoop即可
退出关闭时,使用 wq! 强制保存并退出,否则会提示 E45:‘readonly’ option is set(add ! to override)
5、检查并配置ssh
集群、单机模式都需要用到 SSH 登陆,甚至在集群模式下不同机器之间需要互相拷贝文件,以及通过网络传输文件,假如不配置ssh免密登录的话,每次都要输入对方的登录密码,甚是麻烦,为方便期间,这里还是配置一下
首先通过下面命令检查一下ssh是否安装
yum list installed | grep openssh-server
如果尚未安装,则执行下面的命令安装即可
sudo yum install openssh-server
确定 openssh-server 已安装后,就可以使用 SSH了,输入 ssh localhost 命令登陆本机,但是每次登陆都需要输入密码,很不方便,因此我们需要配置成SSH无密码登陆,更方便一点。具体操作如下:
exit # 退出之前的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,一直按回车即可
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
chmod 600 authorized_keys # 更改文件权限
之后再输入 ssh localhost 命令登陆时,就无需再输入密码,如下所示:
以上为安装hadoop的前置准备工作,这些准备工作必不可少,否则会在后面配置完毕所有的文件启动时,出现各种意想不到的错误
二、配置 Hadoop 3.1.3
1、上传hadoop 3.1.3安装包
2、解压文件
tar -zxvf hadoop-3.1.3.tar.gz #解压文件
mv hadoop-3.1.3 hadoop #重命名文件目录
3、创建两个目录,保存namenode和datanode的数据
进入hadoop目录,创建 name 和 data 两个文件目录,用于保存namenode和datanode的数据
4、进入 etc/hadoop目录,对以下几个关键的配置文件进行配置
- core-site.xml
- hdfs-site.xml
- mapred-site.xml
- yarn-site.xml
- hadoop-env.sh
hadoop的环境搭建关键也就在这几个核心的配置文件,下面按照上面的顺序,依次贴出各个配置文件的内容
core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/bigdata/hadoop/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://公网IP:9000</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/bigdata/hadoop/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/bigdata/hadoop/hadoop/tmp/dfs/data</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 设置 resourcemanager 在哪个节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>公网IP或主机名</value>
</property>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<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>
</configuration>
hadoop-env.sh
这个主要是配置 JDK的路径即可,和上文配置的JDK路径保持一致
以上的配置文件基本上就OK了,由于是伪分布式模式,这样的配置就可以使用了,完全分布式环境的配置相对复杂点
5、初始化namenode
进入hadoop的文件主目录,执行:./bin/hdfs namenode -format ,看到如下信息即可
6、启动 NameNode 和 DataNode
cd sbin #进入主目录下的sbin目录
./start-dfs.sh #启动脚本
启动后,通过jps观察是否启动成功,正常情况下,会看到 3 个进程存在
7、开启防火墙或者安全组策略中开启特定的访问端口
浏览器访问内:http://公网IP:9870 ,看到下面的界面后,接下来就可以愉快的使用hadoop了
分享安装过程中的几个坑
1、使用root用户安装,出现下面的报错信息,经过网上不少参考资料,但基本上都是拆东墙补西墙
2、未安装ssh和配置免密登录,hadoop启动过程中,在上面的几个配置文件中,需要通过公网IP和文件目录数据打交道,因此如果不配置ssh肯定会有问题
3、namenode和datanode的目录没有配置在hadoop的主目录下时,启动hadoop的时候一致报下的错误:
hadoop03: ERROR: Cannot set priority of datanode process 2518错误解决
忘了截图,到网上找了一张基本上一样错误的图做说明
关于这个错误,基本上网上没有一个解决办法可以用,一开始我的namenode和datanode是放在hadoop的主目录之外,出现这个问题后,首先是想到的给namenode和datanode的文件目录授权
但是授权之后,namenode和SecondaryNameNode进程可以启动,但是datanode始终起不来,仍然是报上面的这个错,后来我就将namenode和datanode转移到hadoop的主目录下
但是转移目录之后,需要重新设置上面4个配置文件中的namenode和datanode的位置,然后重新执行初始化命令即可