Hadoop伪分布式部署
2. Hadoop 为分布式运行环境搭建
环境说明:
容器 | 容器ip |
---|---|
master | 192.168.1.210 |
2.1 基础环境配置
2.1.1 配置主机名
hostnamectl set-hostname master && bash
2.1.2 修改hosts,添加映射,关闭防火墙
修改hosts
添加如下:
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.210 master
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
查看防火墙状态如下:
[root@master ~]# systemctl status firewalld
2.1.3 生成免密公钥
[root@master ~]# ssh-keygen -t rsa #然后一直回车
或者
[root@master ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' #免回车
2.1.4 复制公钥到服务器
ssh-copy-id master
2.1.5 JDK配置
解压文件到相应的位置:
[root@master ~]# tar -zxvf /opt/software/jdk-8u162-linux-x64.tar.gz -C /opt/module/
[root@master ~]# cd /opt/module/ #进入解压目录,可以给解压后的文件改个名字,方便记忆
[root@master module]# mv jdk1.8.0_162/ jdk
设置jdk环境变量:
[root@master module]# vi /etc/profile
在末尾添加如下配置:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
刷新环境变量:
[root@master module]# source /etc/profile
配置完后即可查看jdk版本号:
[root@master module]# java -version
基础环境搭建完成!!
2.2 Hadoop伪分布数环境搭建
前提:已完成免密登录,jdk配置
2.2.1 解压包到相应位置:
[root@master module]# tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
[root@master module]# mv hadoop-3.1.3/ hadoop #改一下名字,方便记忆
2.2.2 添加hadoop环境变量
[root@master module]# vi /etc/profile
在末尾添加以下内容:
#HADOOP
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CLASSPATH=`$HADOOP_HOME/bin/hadoop classpath`
:wq 保存退出后,刷新环境变量:
[root@master module]# source /etc/profile
配置好后,即可直接查看hadoop 版本号
[root@master module]# hadoop version
2.3 修改6个主配置文件
- :one: core.site.xml
- :two: hdfs-site.xml
- :three: mapred-site.xml
- :four:yarn-site.xml
- :five: hadoop-env.sh
- :six: workers
2.3.1先进入配置目录
[root@master module]# cd hadoop/etc/hadoop/
[root@master hadoop]# ll
可以看到如下文件:
我们只用修改其中的6条
2.3.2 hadoop-env.sh配置:
[root@master hadoop]# vim hadoop-env.sh #告诉hadoop jdk在哪里
export JAVA_HOME=/opt/module/jdk
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#备注:3.0后的版本需要指定服务用户
如下:
2.3.3 workers配置
(根据自己的集群来进行配置):
[root@master hadoop]# vi workers
master
2.3.4 core.site.xml配置:
[root@master hadoop]# vi core-site.xml
<configuration>
<!-- hdfs的地址名称:schame,ip,port-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopdir/tmp</value>
</property>
</configuration>
2.3.5 hdfs.site.xml:
[root@master hadoop]# vi hdfs-site.xml
<configuration>
<!-- namenode守护进程管理的元数据文件fsimage存储的位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoopdir/dfs/name</value>
</property>
<!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoopdir/dfs/data</value>
</property>
<!-- 块的副本数-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 块的大小(128M),下面的单位是字节-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9868</value>
</property>
<!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!--是否开通HDFS的Web接口,3.0版本后默认端口是9870-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
2.3.6 mapred-site.xml:
[root@master hadoop]# vi mapred-site.xml
<configuration>
<property>
<!-- 指定mapreduce 编程模型运行在yarn上 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.3.7 yarn-site.xml:
[root@master hadoop]# vi yarn-site.xml
<configuration>
<property>
<!-- 指定mapreduce 编程模型运行在yarn上 -->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
以前hadoop 2.X 版本,访问web界面,hdfs端口号是50070,现在3.X版本,端口号是9870(最好自己指定端口号)
2.3.8 配置好后分发到副节点(别忘了环境变量也要再次分发):
伪分布式忽略
分发完后去副节点刷新环境变量
2.3.9 初始化namenode:
[root@master ~]# hdfs namenode -format
结果:
2.3.10 开启集群:
简易启动:
[root@master ~]# start-all.sh
查看结果:
[root@master ~]# jps
3680 SecondaryNameNode
3236 NameNode
3435 DataNode
4571 Jps
3981 ResourceManager
4157 NodeManager
2.4 web端口访问测试
完成