• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Hdfs完全分布式集群搭建和配置和常见问题

武飞扬头像
CREATE^_^
帮助5

一 hdfs完全分布式集群搭建及配置

1 搭建前准备工作

1.1 准备3台虚拟机且修改各台机器的主机名和IP地址

主机名: node01 对应的IP地址: 182.168.67.110
主机名: node02 对应的IP地址: 182.168.67.120
主机名: node03 对应的IP地址: 182.168.67.130

1.2 在windows中将各台linux机器的主机名配置到Windows的本地域名映射文件中:

C:\Windows\System32\drivers\etc\hosts

学新通

1.3 关闭防火墙和selinux

(1)关闭防火墙并设置开机不启动
学新通

systemctl stop firewalld (关闭防火墙)

学新通

systemctl disable firewalld (永久关闭防火墙)
systemctl status firewalld (查看防火墙状态)

学新通
(2)关闭selinux

vi /etc/selinux/config

学新通SELINUX=disabled (SELINUX值改为disabled )

1.4 ssh免密登录

1.4.1 SSH免密登录的原理

需要在B节点配置A节点的公钥
(1)A节点请求B节点,要求登录
(2)B节点使用A节点的公钥,加密一段随机文本
(3)A节点使用私钥解密,并发出回给B节点
(4)B节点验证文本是否正确

1.4.2 SSH免密登录操作步骤

(1)三台机器都执行以下命令分别生成各自的公钥和私钥

ssh-keygen -t rsa

学新通
(2)输入命令后直接三个回车,生成的密钥在/root/.ssh/id_rsa路径下
(3)检查公钥是否正确

 less /root/.ssh/id_rsa.pub

学新通
(4)拷贝三台机器的公钥到第一台机器(三台机器都执行以下命令)

 ssh-copy-id node01

(5)检查拷贝情况

less /root/.ssh/authorized_keys

学新通
(6)复制node01的认证到其他机器

scp /root/.ssh/authorized_keys  node02:/root/.ssh
scp /root/.ssh/authorized_keys  node03:/root/.ssh

(7)免密登录配置完毕可以使用SSH从任意一台机器访问其他机器

1.5 JDK安装

(注:java -version 查看是否自带openjdk 如自带需要删除

rpm -qa | grep java
rpm -e --nodeps java-1.8.0-openjdk-xxxx

1.5.1 创建安装目录

在 cd /usr/local 目录下 创建一个java.

cd /usr/local
mkdir java

把jdk安装在/usr/local/java目录

1.5.2 下载JDK安装包

下载地址
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

学新通

1.5.3 上传JDK文件

补充说明:下载rzsz插件:

yum install -y lrzsz

上传文件到/usr/local/java 目录

 cd /usr/local/java/

学新通

1.5.4 解压
tar -zxvf jdk-8u301-linux-x64.tar.gz
mv jdk1.8.0_301/ jdk1.8

学新通

1.5.5 配置文件

(1)修改配置文件(注:总共有三行配置,每行配置中不能有空格,且不能有换行)
打开配置文件

 vi /etc/profile

如图所示:
学新通
添加的配置如下:

export JAVA_HOME=/usr/local/java/jdk1.8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

(2)刷新环境变量

source /etc/profile

(3)确认安装成功

java -version

学新通

1.5.6 同步JDK到集群的其他虚拟机

(注:需要同步之前在node01和node02中创建java目录

cd /usr/local
mkdir java

(1)scp发送到其他虚拟机

scp -r /usr/local/java/jdk1.8/ node02:/usr/local/java
scp -r /usr/local/java/jdk1.8/ node03:/usr/local/java

(2)修改node02和node03的配置文件

vi /etc/profile
source /etc/profile

2 hdfs完全分布式集群搭建及配置

2.1 上传Hadoop压缩包

(1)创建安装目录

cd /opt
mkdir software
cd software/
mkdir hadoop
cd hadoop/
mkdir hdfs
cd hdfs/
mkdir data
mkdir name
mkdir tmp

学新通

cd /opt/software/hadoop
yum -y install lrzsz

(2)rz (上传hadoop-2.9.2.tar.gz)

学新通

(3)解压hadoop-2.9.2.tar.gz
(4)配置HADOOP_HAME环境变量

export HADOOP_HOME=/opt/software/hadoop/hadoop-2.9.2
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

更新:

source /etc/profile

(5)测试Hadoop是否安装成功

hadoop version

学新通

2.2 配置工作

2.2.1 配置hadoop-env.sh

(注:打开配置文件一定要在 /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/ 目录下打开 并不是/opt/software/hadoop/)

学新通
打开文件:

vi hadoop-env.sh

(注:只是修改里面的JAVA_HOME值和HADOOP_CONF_DIR的值,不是新增)
配置值:

export JAVA_HOME=/usr/local/java/jdk1.8
export HADOOP_CONF_DIR=/opt/software/hadoop/hadoop-2.9.2/etc/hadoop

学新通

2.2.2 配置yarn-env.sh

(注:此配置是新增JAVA_HOME值,需要找到# export JAVA_HOME=/home/y/libexec/jdk1.6.0/在这行下面添加JAVA_HOME配置)
添加以下配置

export JAVA_HOME=/usr/local/java/jdk1.8

学新通

2.2.3 配置core-site.xml

(注:此配置文件需要把文件系统改为node01;切记添加的配置需要写在标签中。)
(1)fs.defaultFS:表示指定集群的文件系统类型是分布式文件系统(HDFS),datanode心跳发送到namenode的地址。
(2)hadoop.tmp.dir表示hadoop临时文件目录。
添加以下配置:

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node01:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/software/hadoop/hdfs/tmp</value>
</property>

学新通

2.2.4 配置hdfs-site.xml

打开配置文件

vi hdfs-site.xml

(注:添加配置中的dfs.datanode.max.locked.memory不一定是65536,需要使用ulimit-l参数查询,得到的数值是64,表示64K,那么64*1024=65536Byte)
① dfs.replication原本配置是1,修改为3,三副本策略,表示副本数是3。
② dfs.name.dir和dfs.data.dir配置不变
③ dfs.datanode.max.locked.memory配置添加,开启缓存,配置值根据自己机器情况配置。
④ dfs.permissions配置添加,值配置false,不开启文件权限.
修改配置如下:

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/software/hadoop/hdfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/software/hadoop/hdfs/data</value>
</property>
<property>
    <name>dfs.datanode.max.locked.memory</name>
    <value>65536</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
学新通

学新通

2.2.5 配置mapred-site.xml

(注:注意要在标签中添加配置)
① 需要把mapred-site.xml.template拷贝成mapred-site.xml文件进行配置。
cp mapred-site.xml.template mapred-site.xml
打开配置文件:

vi mapred-site.xml

② mapreduce.framework.name指定资源分配使用yarn
添加以下配置:

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

学新通

2.2.6 配置yarn-site.xml

打开配置文件

vi yarn-site.xml

(注:在标签中添加配置)
① yarn.resourcemanager.hostname:yarn相关资源服务器的主机名,使用node01
② yarn.nodemanager.aux-services和MapReduce计算相关
③ yarn.nodemanager.vmem-check-enabled 关闭虚拟内存检查
添加以下配置:

<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node01</value>
</property>
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>
2.2.7 配置 slaves

打开配置文件

vi slaves

配置3台机器主机名node01,node02,node03,此配置表示三台机器都作为DataNode。

2.3 同步配置文件

(1)在node02、node03上创建/opt/software目录

cd /opt/
mkdir software

(2)把node01上的配置同步到node02和node03

cd /opt/software/

使用scp命令进行同步

scp -r hadoop/ node02:$PWD
scp -r hadoop/ node03:$PWD

2.4 配置环境变量

① 之前只在node01上配置了hadoop环境变量,现在需要在node02和node03上添加hadoop环境变量
② 在node02和node03机器的/etc/profile环境变量中添加hadoop配置
打开配置文件

vi /etc/profile

添加以下配置:

export HADOOP_HOME=/opt/software/hadoop/hadoop-2.9.2
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

③ 添加配置后加载配置文件,使得配置文件生效

source /etc/profile

3 启动集群

3.1 在node01上格式化

格式化

hdfs namenode -format

3.2、启动集群

(注:不需要在三台机器都启动,只需在node01上启动一次即可)
启动集群

start-dfs.sh

3.3 查看启动情况

查看集群启动进程

jps

node01
学新通node02
学新通
node03
学新通

3.3.1、访问web管理台

http://192.168.67.110:50070/

学新通

3.4 上传文件测试

(1)创建上传文件目录

hdfs dfs -mkdir /test

学新通
学新通
(2)上传文件
上传文件到node01

cd /opt/
mkdir testData
cd testData/
mkdir hdfs
cd hdfs

rz 上传hadoop-2.9.2.tar.gz

rz 

把hadoop-2.9.2.tar.gz上传到分布式文件系统

hdfs dfs -put hadoop-2.9.2.tar.gz  /test

学新通

(3)文件上传成功以后检查datanode节点情况
学新通

二 常见问题总结

1 问题一:

不识别主机名称
错误:

java.net.UnknownHostException: node01: node02
at java.net.InetAddress.getLocalHost(InetAddress.java:1475)        
atorg.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:146)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
        at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)

解决方法:

查看hosts文件是否写错,或没有配置

2 问题二:

rz-上传文件时偶尔出现乱码情况
解决方法:
尽量下载使用xftp 7来上传文件

3 问题三:

在配置免密登录时,可能会遇到如下问题
Could not resolve hostname node01:Name or service not known
解决方法:
在虚拟机本机的hosts文件中没有添加相应的IP和解析地址。

4 问题四:

在打开hadoop-env.sh等配置文件发现里面无内容
解决方法:
应该在/opt/software/hadoop/hadoop-2.9.2/etc/hadoop/ 目录下打开 并不是/opt/software/hadoop

5 问题五:

在使用hdfs命令时出现拒绝连接
解决方法:
启动hdfs集群

start-dfs.sh

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfifeij
系列文章
更多 icon
同类精品
更多 icon
继续加载