Hadoop环境搭建

Hadoop环境搭建

虚拟机配置

创建虚拟机

将文件中,关于监听端口、监听地址前的 # 号去除

开启允许远程登录

开启使用用户名密码来作为连接验证

在这里插入图片描述

开启 sshd 服务,输入 sudo service sshd start

centos7操作SSH/SSHD服务

查看状态:

systemctl status sshd.service

启动服务:

systemctl start sshd.service

重启服务:

systemctl restart sshd.service

开机自启:

systemctl enable sshd.service

生成密钥

ssh-keygen -t rsa

配置虚拟机网络

vi /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT="yes"
PEERDNS="no"

查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld
# 永久关闭防火墙
systemctl  disable  firewalld

配置环境变量

vim /etc/profile

配置JAVA_HOME

##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_271
export PATH=$PATH:$JAVA_HOME/bin

配置HADOOP_HOME

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export $PATH:$HADOOP_HOME/bin
export $PATH:$HADOOP_HOME/sbin

激活环境变量

source /etc/profile

伪分布式搭建

启动HDFS

配置

etc/hadoop/core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://hadoop101:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

hadoop-env.sh

# 修改JAVA_HOME路径
export JAVA_HOME=/opt/module/jdk1.8.0_271

hdfs-site.xml(选择性配置)

<!-- 指定HDFS副本的数量(每台服务器只备份一份数据) -->
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>
启动集群

格式化NameNode

注:

  • 第一次启动时格式化,之后不要总格式化

  • 后面在格式化的时候要先关掉NameNode和DataNdoe的进程,然后删掉data和logs的数据,再进行格式化

bin/hdfs namenode -format

启动NameNode

sbin/hadoop-daemon.sh start namenode

启动DataNode

sbin/hadoop-daemon.sh startdatanode

访问HDFS

hadoop101:50070

hdfs下相关命令

# 创建文件夹
bin/hdfs dfs -mkdir -p /user/atguigu/input
# 上传文件(-input 本地路径 上传路径)
bin/hdfs dfs -put wcinput/wc.input /user/atguigu/input

启动Yarn

配置

yarn-env.sh

# 修改JAVA_HOME路径
export JAVA_HOME=/opt/module/jdk1.8.0_271

yarn-site.xml

<!-- Reducer获取数据的方式 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hadoop101</value>
</property>

mapred-env.sh

# 修改JAVA_HOME路径
export JAVA_HOME=/opt/module/jdk1.8.0_271

mapred-site.xml(将模板文件mapred-site.xml.template重命名)

mv mapred-site.xml.template mapred-site.xml
<!-- 指定MR运行在YARN上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
启动集群

启动前要保证NameNode和DataNode处于启动状态

sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager

查看MapReduce

hadoop101:8088

配置历史服务器

mapred-site.xml

<!-- 历史服务器端地址 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>hadoop101:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>hadoop101:19888</value>
</property>

启动历史服务器

sbin/mr-jobhistory-daemon.sh start historyserver

访问

hadoop101:19888

配置日志的聚集

概念:应用运行完成后,将程序运行日志信息上传到HDFS系统上,方便查看程序运行情况,方便调试

:开启日志聚集功能,需要重启NodeManager、ResourceManager、HistoryManager

配置

yarn-site.xml

<!-- 日志聚集功能使能 -->
<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
</property>
<!-- 日志保留时间设置 -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>604800</value>
</property>

完全分布式搭建

虚拟机准备

克隆三台虚拟机

编写集群分发脚本

xsync

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=103; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

集群配置

部署规划

:HDFS的NameNode、SecondaryNameNode和YARN的ResourceManager由于消耗内存大尽量不部署在同一节点下

hadoop102hadoop103hadoop104
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager
配置集群
核心配置文件

core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
	<name>fs.defaultFS</name>
    <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
HDFS配置文件

hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

hdfs-site.xml

<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop104:50090</value>
</property>
YARN配置文件

yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

yarn-site.xml

<!-- Reducer获取数据的方式 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hadoop103</value>
</property>
MapReduce配置文件

mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

mapred-site.xml

<!-- 指定MR运行在Yarn上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
在集群上分发配置好的Hadoop配置文件

xsync /opt/module/hadoop-2.7.2/

配置ssh无密登录

在这里插入图片描述

生成公钥和私钥

ssh-keygen -t rsa

将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop102

.ssh文件夹下(~/.ssh)的文件功能解释

known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过得无密登录服务器公钥

集群启动

配置slaves

vi /opt/module/hadoop-2.7.2/etc/hadoop/slaves
# 增加节点名称
hadoop102
hadoop103
hadoop104
# 同步所有节点配置文件
xsync slaves

第一次启动,删除data和logs,然后格式化

hadoop namenode -format

启动

:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN

sbin/start-dfs.sh
sbin/start-yarn.sh
集群时间同步
# 安装ntp
yum install -y ntp
# 配置 /etc/ntp.conf

编译源码

配置环境变量

##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_271
export PATH=$PATH:$JAVA_HOME/bin

#MAVEN_HOME
export MAVEN_HOME=/opt/module/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin

#ANT_HOME
export ANT_HOME=/opt/module/apache-ant-1.9.9
export PATH=$PATH:$ANT_HOME/bin

#LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/module/protobuf-2.5.0
export PATH=$PATH:$LD_LIBRARY_PATH

错误记录

在这里插入图片描述

原因:jdk的安装位数与系统安装位数不一致

解决办法:

1.查看系统位数

getconf LONG_BIT

2.重新安装对应对应位数的JDK

  • 无法访问50070

原因:防火墙没有关闭

解决办法:

//查看防火墙状态
systemctl status firewalld
//关闭防火墙
systemctl stop firewalld
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值