Hadoop系列之Hadoop环境搭建(一)

蔚落 2023-05-30 06:06 200阅读 0赞

环境简介

centos系统

jdk(jdk的安装和配置,请参考Linux系列之安装jdk(二))

hadoop3.2.1

一、创建hadoop用户

useradd -m hadoop -s /bin/bash #创建新用户hadoop

passwd hadoop #输入密码(若提示“无效的密码,过于简单”则再次输入确认就行)

visudo #为hadoop用户增加管理员权限

增加这句话hadoop ALL=(ALL) ALL (当中的间隔为tab)

20191107165333383.png

su hadoop #切换hadoop用户

二、hadoop安装前的准备工作

1、安装ssh

CentOS 默认已安装了 SSH client、SSH server,可以不用再次安装了

rpm -qa|grep ssh #检查是否安装了ssh

20191107165409854.png

安装ssh的命令

yum install openssh-clients

yum install openssh-server

ssh localhost #测试安装的ssh是否可用

exit #退出登录的ssh

2、ssh免密码登录

cd ~/.ssh/ #若没有该目录,请先执行一次ssh localhost

ssh-keygen -t rsa #会有提示,按三次enter即可

cat id_rsa.pub >> authorized_keys # 加入授权

chmod 600 ./authorized_keys # 修改文件权限

此时,就可以无密码登录ssh了

注:

在 Linux 系统中,~ 代表的是用户的主文件夹,即 “/home/用户名” 这个目录,如你的用户名为 hadoop,则 ~ 就代表 “/home/hadoop/”。

三、hadoop单机模式搭建

hadoop下载路径:http://mirror.bit.edu.cn/apache/hadoop/common/

tar -zxvf hadoop-3.2.1.tar.gz #解压hadoop

mv ./hadoop-3.2.1/ ./hadoop #重命名文件为hadoop

chown -R hadoop:hadoop ./hadoop #修改文件权限

./bin/hadoop version #检查hadoop是否可用,若可用,则显示版本信息

执行hadoop的例子

mkdir input #新建文件夹

cp etc/hadoop/*.xml input #将配置文件作为输入文件

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output ‘dfs[a-z.]+’ #运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子,包括 wordcount、terasort、join、grep 等。此处使用的grep例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

cat output/* #查看运行结果

四、hadoop伪分布式环境搭建

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

vim /etc/profile #在/ect/profile中配置hadoop环境变量

添加下面的语句

# Hadoop Environment Variables

export HADOOP_HOME=/usr/local/soft/hadoop

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

source /etc/profile #是配置生效

cd /usr/local/soft/hadoop #hadoop的一些常用配置都在etc/hadoop下面

vim etc/hadoop/hadoop-env.sh #在此加入java_home配置:export JAVA_HOME=/usr/local/soft/jdk-12.0.1

配置core-site.xml







hadoop.tmp.dir

file:/usr/local/soft/hadoop/tmp

Abase for other temporary directories.







fs.defaultFS

hdfs://localhost:9000



配置hdfs-site.xml







dfs.replication

1







dfs.namenode.name.dir

file:/usr/local/soft/hadoop/tmp/dfs/name







dfs.datanode.data.dir

file:/usr/local/soft/hadoop/tmp/dfs/data



bin/hdfs namenode -format #配置完成后,执行namenode格式化

sbin/start-dfs.sh #开启namenode和datanode

jps #查看是否启动成功,若启动成功会出现namenode,datanode和secondaryNameNode进程

运行hadoop伪分布式实例

bin/hdfs dfs -mkdir -p /user/hadoop #在hdfs中创建用户目录:grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录

bin/hdfs dfs -mkdir input #在hdfs上创建input文件夹

bin/hdfs dfs -put etc/hadoop/*.xml input #将etc/hadoop下的xml文件复制到hdfs的input文件夹下

bin/hdfs dfs -ls input #查看复制的文件

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output ‘dfs[a-z.]+’ #执行实例:伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件

bin/hdfs dfs -cat output/* #查看运行的结果

bin/hdfs dfs -get output ./output # 将 HDFS 上的 output 文件夹拷贝到本机

bin/hdfs dfs -rm -r output # 删除hdfs上的 output 文件夹

五、启动YARN(Yet Another Resource negotiator)

YARN 主要是为集群提供更好的资源管理与任务调度

配置mapred-site.xml





mapreduce.framework.name

yarn



配置yarn-site.xml





yarn.nodemanager.aux-services

mapreduce_shuffle



sbin/start-yarn.sh #启动yarn

jps #查看是否启动成功,resourceManager、nodeNanager

六、问题和解决

1、防火墙

systemctl status iptables.service 查看防火墙状态

systemctl stop iptables.service 关闭防火墙

systemctl start iptables.service 开启防火墙

2、vagrant虚拟机内存不足

修改Vagrantfile文件

config.vm.provider “virtualbox” do |v|

  1. v.memory = 1024
  2. v.cpus = 2

end

查看内存使用情况命令:free -m

3、启动hadoop时报错:but there is no HDFS_NAMENODE_USER defined. Aborting operation.

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAxMjE4ODM_size_16_color_FFFFFF_t_70

4、hadoop不是第一次启动的情况下

若hadoop不是第一次启动,则不需要执行格式化命令(不用执行hdfs namenode -format),直接执行启动hadoop命令即可(sbin/start-dfs.sh)

不是第一次启动hadoop的话,使用格式化命令,就会出现下面的错误

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAxMjE4ODM_size_16_color_FFFFFF_t_70 1

解决办法:

sbin/stop-dfs.sh #停掉服务
rm -rf tmp/* #删除tmp下面的所有文件(所有datanode节点都要执行)
hdfs namenode -format #重新格式化

sbin/start-dfs.sh #启动服务

发表评论

表情:
评论列表 (有 0 条评论,200人围观)

还没有评论,来说两句吧...

相关阅读