Hdfs完全分布式集群搭建和配置和常见问题
一 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
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01