Hadoop安装搭建伪分布式教程(全面)吐血整理
1、安装下载虚拟机VMware
博主使用的是VMware Workstation 16 Pro,这个的安装教程很多,大家可以自行搜索安装。
官网:https://www.vmware.com/cn/products/workstation-pro.html
2、下载Ubuntu18.04镜像文件,并在VMware中添加虚拟机。
Ubuntu一般使用18或者16版本,20版本有些未知的问题。
打开ubuntu18.04.1的下载地址:https://www.ubuntu.com/download/desktop,进入页面后点击右边的Download按钮开始下载。
1.右上角点击新建虚拟机
2.默认3.选择自己安装镜像文件的位置4.这里自己设置账户和密码5.选择虚拟机的位置,博主放在了D盘6.这个的配置比较高了,也可以使用默认的4核7.按照建议内存,之后就一直下一步8.这里的磁盘大小默认为20G,根据自己需要选择大小。将虚拟磁盘储存为单个文件
然后一直下一步,就能等它跑进度条了。
3、Hadoop伪分布式搭建
前两个都是开胃小菜,这才是正题。
3.1 创建hadoop用户,并更新ubuntu系统中相应软件,安装vim编辑器
3.1.1 创建hadoop账户
1.按 Ctrl + Alt + T,即可进入命令行模式。
2.输入以下语句,创建一个名为hadoop的用户,useradd命令的-m用来指定用户名,-s用来指定用户登录时所需的shell文件:
sudo useradd -m hadoop -s /bin/bash
3.由于部门权限规定或安全限制,负责部署hadoop的管理员没有linux root权限,但按照最佳做法,安装时有一些操作需要以root用户身份执行。以下给予该用户root权限:
sudo adduser hadoop sudo
如果在安装Ubuntu时用户名使用的是hadoop,这两步不需要。
3.1.2 更新命令
1.由于ubuntu系统刚完成安装,需要更新相关一些软件,确保接下来的操作可以正常完成:
sudo apt-get update
如果这条命令执行速度很慢,请使用下面的方法(虽然一般很快)
参考https://blog.csdn.net/m0_37601622/article/details/82968780
如果发现更新速度过慢,或者更新时反复跳出连接超时的提示,则可以将源文件链接地址替换为国内镜像文件从而提高更新速度。首先先利用cp命令备份当前系统的源文件,其中第一个参数时拷贝的文件路径和文件名称,第二个是拷贝到的文件路径和文件名:
sudo cp /etc/apt/sources.list /etc/apt/sources.bak1
打开需要更新的源文件:
sudo gedit /etc/apt/sources.list
将文件内的内容替换成其他源文件:
如清华源:参考https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
完成后保存,重新运行更新命令:
sudo apt-get update
sudo apt-get upgrade
2.上述更新完成后:
部分linux系统会自带vim编辑器,但若在终端无法启动该编辑器,则需要安装以待后续编辑配置文件,接下来跳出的提示回复Y即可:
sudo apt-get install vim
3.2 配置SSH,并设置无密码登录
3.2.1 下载SSH
根据Hadoop分布式系统的特性,在任务计划分发、心跳监测、任务管理、多租户管理等功能上,需要通过SSH(Secure Shell)进行通讯,所以必须安装配置SSH。另因为Hadoop没有提供SSH输入密码登录的形式,因此需要将所有机器配置为NameNode可以无密码登录的状态。
1.首先安装SSH server(之所以不需要安装SSH client是因为ubuntu已经默认安装了):
sudo apt-get install openssh-server
2.完成后连接本地SSH
ssh localhost
按提示输入yes,再输入hadoop用户的密码,完成登录。
3.2.2 设置无密码登录
1.以下进行无密码登录的设置,首先先退出刚刚ssh localhost的连接:
exit
2.然后进入SSH对应目录下,该目录包含了几乎所有当前用户SSH配置认证相关的文件:
cd ~/.ssh/
3.输入生成SSH私钥与公钥的命令,-t用于声明密钥的加密类型,输入Hadoop密码。这一步会提醒设置SSH密码,输入密码时直接回车就表示无密码,第二次输入密码回车确定,最后一次提交:
ssh-keygen -t rsa
4.将生成的SSH的公钥加入目标机器的SSH目录下,这里采用cat命令与>>,cat file1>>file2的含义为将file1内容append到file2中。
cat ./id_rsa.pub >> ./authorized_keys
3.3 安装Java并配置环境变量
3.3.1 下载Java
Hadoop和与之相关的很多工具都是通过java语言编写的,并且很多基于hadoop的应用开发也是使用java语言的,但是ubuntu系统不会默认安装java环境,所以需要安装java并配置环境变量。以下安装下载java的jdk、jre:
sudo apt-get install default-jre default-jdk
3.3.2 配置环境变量
1.通过vim编辑器打开环境变量的设置文件:
sudo vim ~/.bashrc
2.在文件的尾部加上以下语句:
export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
在这一步在我的虚拟机中直接复制时会出现第一句的export只剩rt两个字母,必须要手动输入export。
3.按Esc键退出,然后输入:wq保存修改。然后使环境变量生效:
source ~/.bashrc
3.4 下载编译好的hadoop,配置hadoop的环境
3.4.1 下载并解压
1.在虚拟机内的火狐浏览器中输入https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/,下载hadoop应用,默认保存至downloads文件夹下。选择已编译好的版本hadoop-2.9.2.tar.gz,因为该版本可以直接解压使用,更为方便。
2. 进入解压包存放的Downloads文件夹,右键属性查看压缩包的绝对路径,然后解压至/usr/local目录下:
sudo tar -zxf /home/hadoop/Downloads/hadoop-2.9.2.tar.gz -C /usr/local
3.进入刚刚解压后存放的目录下:
cd /usr/local/
4.将该文件夹的名字重命名为hadoop,屏蔽掉版本号的信息,使得后续命令行输入更为简便:
sudo mv ./hadoop-2.9.2/ ./hadoop
3.4.2 配置环境
1.将已重命名的该文件夹的拥有者,指定给用户hadoop,缺少这一步,将导致后续操作特别是运行Hadoop时,反复因权限不足而停止:
sudo chown -R hadoop ./hadoop
2.经后续测试发现问题,虽然已经为ubuntu系统设置了java的环境变量,但hadoop实际运行时仍会出现找不到java-jdk的现象,故再对hadoop的环境文件进行修改,此外,该文件还包括启动参数、日志、pid文件目录等信息。先进入目录:
cd ./hadoop/etc/hadoop
3.使用vim编辑器,打开环境变量文件:
sudo vim hadoop-env.sh
4.添加该语句(这里也需要手动输入export):
export JAVA_HOME=/usr/lib/jvm/default-java
5.按Esc键退出,然后输入:wq保存修改。然后使环境变量生效:
source hadoop-env.sh
6.截至目前,hadoop框架已经搭建好了,可以通过调用版本号进行测试hadoop是否可用
cd /usr/local/hadoop
./bin/hadoop version
正确搭建应该能看到hadoop的版本号等信息:
3.5 配置四个文件
从字面上,很好理解伪分布式的含义,对于Hadoop而言,可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode。设置Hadoop参数的主要方式是配置一系列由Hadoop守护进程和客户端读取的配置文件,如之前提及的hadoop-env.sh,还包括core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties、taskcontroller.cfg等,伪分布式需要修改四个文件,修改的顺序没有特殊要求,以下进行逐一介绍。
此时需要在hadoop文件夹下的hadoop文件中
绝对路径是cd /usr/local/hadoop/etc/hadoop
3.5.1 core-site.xml
1.先打开xml文件,注意./表示当前文件夹下,当前应该在第二个hadoop文件夹下
cd ./etc/hadoop/
。
sudo gedit core-site.xml
2.打开xml文件应该是有内容的,如果没有内容说明打开文件不对,需要检查输入的路径及文件名是否正确。将替换为以下内容,第一个属性表示Hadoop重要临时文件的存放目录,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务;第二个被官方称之为默认系统文件的名称(the name of the default file system),实际上决定了文件系统的主机号、端口号,对于伪分布式模型来说,其主机地址为localhost。
<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>
3.5.2 hdfs-site.xml
1.同样进入hdfs-site.xml文件:
sudo gedit hdfs-site.xml
2.对hdfs-site.xml进行同样的替换操作,属性的含义分别为复制的块的数量、DFS管理节点的本地存储路径、DFS数据节点的本地存储路径:
<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>
3.5.3 mapred-site.xml
1.Hadoop2.X并没有像1.X提供mapred-site.xml文件,需要将样本文件复制为可使用的配置文件:
mv mapred-site.xml.template mapred-site.xml
2.同样打开
sudo gedit mapred-site.xml
3.这里使用yarn。yarn 是一种资源管理和作业调度技术,作为Hadoop 的核心组件之一,负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务,其基本思想是将资源管理和作业调度/监视的功能分解为单独的 daemon,总体上yarn是 master/slave 结构,在整个资源管理框架中,ResourceManager 为 master,NodeManager 是 slaver。具体配置内容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.5.4 yarn-site.xml
1.打开
sudo gedit yarn -site.xml
2.然后配置yarn-site.xml文件,这里修改NodeManager上运行的附属服务即可:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.6 格式化后启动、调用实例、停止所有运行的hadoop进程
3.6.1 格式化并启动
1.为了保险起见,执行这一步前关闭命令行模式,重新打开,放弃当前路径。
更改配置并保存后,格式化HDFS的NameNode,在这一步之前,如果hdfs-site.xml中dfs.namenode.name.dir属性指定的目录不存在,格式化命令会自动创建之;如果存在,请确保其权限设置正确,此时格式操作会清除其内部所有的数据并重新建立一个新的文件系统:
/usr/local/hadoop/bin/hdfs namenode -format
显示信息内若包含以下内容,则说明成功格式化:
2.然后启动全部进程:
start-all.sh
3.成功启动后,可以通过web浏览器访问http://localhost:50070,可以看到如下界面:
4.输入jps查看到六个进程,如果缺少某进程需要查询解决方法:
5.在HDFS中创建用户目录:
hdfs dfs -mkdir -p /user/hadoop
6.创建input目录,用于输入数据:
hdfs dfs -mkdir input
7.将所需的xml配置文件复制到input中:
(需要注意路径)
hdfs dfs -put usr/local/hadoop/etc/hadoop/*.xml input
8.如果系统之前运行过hadoop,则需要删除output目录:
hdfs dfs -rm -r output
这几步会出现很多的warning,不用在意。
3.6.2调用实例
1.运行实例,需要先进入hadoop的文件夹下
cd /usr/local/hadoop
2.输入
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output
要等一会,结果如下图
3.然后进入hadoop下面的bin
cd /usr/local/hadoop/bin
4.查看运行结果
hdfs dfs –ls ./output
hdfs dfs -cat output/*
到这里,整个安装过程就结束了。第一次这么认真写CSDN,完全是因为装这个伪分布式实在太痛苦了。会遇到很多没法解决的问题,我基本重装了虚拟机6遍,整个花时间十几个小时,吐血。
版权归原作者 剁椒沙丁鱼 所有, 如有侵权,请联系我们删除。