从零开始:手摸手教你入门搭建Hadoop
引言
在现代企业中,数据量的快速增长带来了巨大的挑战
传统的数据处理和分析工具已经难以应对大规模数据的存储和处理需求
特别是在业务团队项目中,面对海量数据的实时处理和分析,如何高效地管理和利用这些数据成为了一个关键问题
而Hadoop的出现就能够解决海量数据下的存储与计算
然而,Hadoop的安装与配置并非易事,尤其是对于初学者来说,可能会遇到各种困难和挑战
别担心,本文将为你提供详尽的步骤指导,帮助你轻松上手,从零开始搭建属于自己的Hadoop
在这篇文章中,我们将使用云服务器演示入门搭建Hadoop的完全流程,包含一些需要注意的点和坑都会列举出来
无论你是出于学习目的还是实际应用需求,相信都能从中受益匪浅
接下来,就让我们一起踏上这段充满挑战与乐趣的旅程吧
环境准备
需要准备Linux系统的机器,我采用的是腾讯云轻量级服务器,OpenClouds系统兼容CentOS
如果没有服务器的同学也可以在之前挑选服务器的文章中,选择秒杀活动中的轻量级服务器,一年也就三十不到
或者也可以在本地虚拟机的Linux系统中进行搭建学习
创建用户
首先,我们需要创建Hadoop用户进行使用
菜菜一开始使用的是Root用户,后面会导致无法运行Hadoop
#添加用户sudouseradd hadoop
#设置密码sudopasswd hadoop
#切换用户su hadoop
配置SSH
Hadoop节点间采用ssh,没配会导致程序无法启动,因此需要配置ssh免密登陆
首先需要安装ssh
#安装
yum install openssh
#需要密码校验ssh localhost
#登陆成功后退出 开始配置免密登陆exit
测试成功后,开始配置免密登录
cd ~/.ssh
#生成密钥 回车几下
ssh-keygen -t rsa
#添加cat ./id_rsa.pub >> ./authorized_keys
#确保有权限chmod700 ~/.ssh
chmod600 ~/.ssh/authorized_keys
#再次登陆不需要密码ssh localhost
配置完成后,再次登录无需输入密码
JDK安装与配置
由于Hadoop是基于Java实现的,因此我们需要确保拥有JDK的环境
#更新包索引sudo yum update -y
#安装JDKsudo yum install java-1.8.0-openjdk-devel -y
成功安装JDK后只能在bin目录下使用命令才会生效,因此需要配置环境变量
配置环境变量后,即使在全局任意目录下,使用命令都会生效
首先需要找到JDK 安装目录,通常在/usr/lib下
#找到JDK目录 JDK通常在/usr/lib下 #/usr/lib/jvmpwd#目录名太长改成jdk8mv java-1.8.0-openjdk-1.8.0.432.b06-2.oc8.x86_64/ jdk8
#配置环境变量 在末尾追加环境变量vim ~/.bashrc
exportJAVA_HOME=/usr/lib/jvm/jdk8
exportPATH=$JAVA_HOME/bin:$PATH#环境变量生效source ~/.bashrc
#查看版本号 判断是否安装成功
java -version
配置完环境变量,运行查看Java版本号的命令出现:
搭建Hadoop
准备好环境后,即可开始准备安装Hadoop
下载压缩包
我们采用压缩包的方式进行安装,先进行下载
下载完成后将压缩包进行上传
#解压sudotar -zxf hadoop-3.4.1.tar.gz
#进入目录cd hadoop-3.4.1
#查看版本 如果没找到JDK说明 JDK环境变量配的有问题
./bin/hadoop version
解压完成后,进入bin目录使用hadoop version查看版本号
配置环境变量
#末尾追加 我的Hadoop目录是:/home/lighthouse/hadoop-3.4.1vim ~/.bashrc
exportHADOOP_HOME=/home/lighthouse/hadoop-3.4.1
exportHADOOP_MAPRED_HOME=$HADOOP_HOMEexportHADOOP_COMMON_HOME=$HADOOP_HOMEexportHADOOP_HDFS_HOME=$HADOOP_HOMEexportYARN_HOME=$HADOOP_HOMEexportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
exportHADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"#这里也有JAVA的环境变量exportPATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
在其他目录下输入hadoop version 输出版本信息说明安装成功
修改配置文件
启动Hadoop前,需要进行一些重要配置,比如配置hdfs存储数据目录
#创建目录存放Hadoop的数据,/home/lighthouse/hadoop-datamkdir hadoop-data
#进入Hadoop安装目录的etc目录下 准备编辑配置文件#/home/lighthouse/hadoop-3.4.1/etc/hadooppwd
配置临时数据文件和hdfs地址:vim core-site.xml
<configuration><!-- 临时文件 --><property><name>hadoop.tmp.dir</name><value>file:/home/lighthouse/hadoop-data/tmp</value><description>Abase for other temporary directories.</description></property><!--hdfs地址--><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property></configuration>
配置hdfs存储相关配置: vim hdfs-site.xml
<configuration><!-- 副本数量 --><property><name>dfs.replication</name><value>3</value></property><!-- namenode 元数据 存储目录 --><property><name>dfs.namenode.name.dir</name><value>file:/home/lighthouse/hadoop-data/tmp/dfs/name</value></property><!-- datanode 真正数据 存储目录 --><property><name>dfs.datanode.data.dir</name><value>file:/home/lighthouse/hadoop-data/tmp/dfs/data</value></property></configuration>
配置jdk环境变量:vim hadoop-env.sh
查找
/JAVA_HOME
格式化数据节点
hdfs namenode -format
启动
start-all.sh 执行启动脚本
(此时如果你使用的用户不是hadoop,并且没有配置ssh是无法成功运行的)
jps 查看启动的Java程序
如果你也是云服务器的话要开放UI界面的端口,NameNode 50070(Hadoop 2.x版本),9870(Hadoop 3.x版本)
或者选择关闭防火墙
systemctl stop firewalld.service
访问NameNode的UI WEB界面,默认端口:50070(Hadoop 2.x版本),9870(Hadoop 3.x版本)
至此,Hadoop相当于搭建成功,可以使用命令或WEB界面进行使用
坑
依旧无法启动的情况:
- 用户不为Hadoop
- 用户未配置SSH
- 删除name和data节点的数据(有重要数据记得备份),再进行格式化
#删除历史数据rm /home/lighthouse/hadoop-data/tmp/dfs/name
rm /home/lighthouse/hadoop-data/tmp/dfs/data
#格式化
hdfs namenode -format
#启动
start-all.sh
#查看已启动的Java程序
jps
总结
通过引入Hadoop,业务团队能够有效地应对大规模数据的存储和处理挑战,提升了数据处理效率,降低存储成本,增强系统的稳定性和可靠性
搭建Hadoop的过程可能涉及到不同的坑,但通过本文的详细指导,同学们可以顺利地进行搭建
希望本篇实践能帮助你在项目中成功应搭建Hadoop,带来显著的业务价值
版权归原作者 菜菜的后端私房菜 所有, 如有侵权,请联系我们删除。