最近刚自己又分别搭了一次Hadoop的两个环境,主要是给想学习Hadoop刚开始的环境搭建以及遇到的一些问题。因为刚开始自己Hadoop也是自学的所以遇上了很多问题,这次比较顺利,Hadoop学习的基础肯定是java和Linux,下面我就从伪分布式开始说一下其中的步骤和遇上的问题。其中虚拟机用的是Centos 6的版本,这个用起来比较方便,建议用mini版的可以锻炼自己读写代码的能力。
一、伪分布式环境搭建
①安装前的准备
1 需要JDK环境 |
2 防火墙关闭 |
3 修改seLinux |
4 创建独立用户 Hadoop |
5 设置主机名称 hadoop01 |
6 hosts 地址映射 |
1.准备JDK环境
首先规划一下文件的安装目录:在 /opt下创建app,softs目录
softs为文件上传的目录
app为安装软件的目录
上传文件可以使用rz命令如果没有可以yum -y install lrzsz直接安装。个人感觉这个命令并不是很好用,我自己用的是FlashFXP软件上传的文件操作比较简单而且速度比较快。
1)将准备好的jdk解压,到/opt/app中 tar -zvxf jdk1.8.0_181 -C /opt/app
2)配置jdk的环境变量 vi /etc/profile
在最后一行开始追加上
export JAVA_HOME=/opt/app/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
配置完毕后wq保存退出 然后执行source /etc/profile让配置生效
2.关闭防火墙
service iptables stop临时关闭
chkconfig iptables off永久性关闭
个人认为防火墙开着没什么卵用直接永久关闭就ok
3.修改selinux
vi /etc/sysconfig/selinux
设置 SELINUX=disabled
4.修改主机名称
hostname 主机名 临时修改
vi /etc/sysconfig/network 永久修改
5.IP绑定hostname
vi /etc/hosts
这是我自己搭建的完全分布集群的绑定 伪分布式只需要绑定当前一台机器的IP地址和主机名
安装Hadoop环境
1) 需要创建独立用户 hadoop 使用useradd hadoop
2) 修改独立用户的密码 passwd hadoop 密码 123456
3) 切换到Hadoop 用户下进行解压Hadoop 文件 ,之前必须要为Hadoop用户设置sudo 权限
4) 使用visudo 设置hadoop 权限
Hadoop 默认是在linux 32位系统下编译的,如果自己下载官网上的hadoop 需要重新编译一下源码 不然会出现无法加载本地库的问题
5) 修改 Hadoop源文件的 用户 和用户组的权限
sudo Chown -R hadoop:hadoop hadoop文件
6) 解压hadoop 安装目录
sudo tar -zvxf hadoop -C /opt/app
7) 解压之后的Hadoop 的目录
bin etc include lib libexec LICENSE.txt NOTICE.txt README.txt sbin share
Bin: Hadoop的最基本脚本目录, hadoop 命令 hdfs 的命令 都在该目录下执行
Etc: 该目录下存放的位Hadoop 配置文件 Hadoop分为四大核心模块 core hdfs mapreduce yarn 该目录下的配置文件也是对应了四个核心模块的配置
Lib : 包含了hadoop中动态编程以及动态编程中引用的库文件 头文件信息
Sbin: hadoop脚本管理目录,主要存放了HDFS YRAN 服务的启动和关闭
Share: 包含了hadoop各个模块的编译后的jar包
1 编写etc/hadoop hadoop-env.sh 增加JAVA_HOME 安装路径
export JAVA_HOME=/opt/app/jdk1.8.0_181
2 尝试使用 bin/hadoop 命令看能否提示出hadoop命令
配置HDFS
1)配置
配置HDFS的路径的地址
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
</configuration>
修改hadoop临时保存目录
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/app/hadoop-2.7.2/data/tmp</value>
</property>
2) 配置etc/hadoop/hdfs-site.xml:HDFS 的复制因子 在伪分布式环境中 必须设置1
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3)该属性定义了 HDFS WEB访问服务器的主机名和端口号
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:50070</value>
</property>
4)定义secondarynamenode 外部地址 访问的主机和端口
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>主机名:50090</value>
</property>
5)配置 namenode fs edites 存储目录
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
6) 配置namednoe edits 存储模式
<property>
<name>dfs.namenode.edits.dir</name>
<value>${dfs.namenode.name.dir}</value>
</property>
7)配置datanode 数据存储目录
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
8)修改secondaryNameNode fsimage 的存储路径
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>
</property>
9)修改secondaryNameNode edits 的存储路径
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>${dfs.namenode.checkpoint.dir}</value>
</property>
配置YARN环境
1)配置mapred-site.xml文件设置Mapreduce框架运行名称为yarn
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2)设置yarn中的服务类yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3)配置resourcemanager 的主机位置
<property>
<name>yarn.resourcemanager.hostname</name>
<value>主机名</value>
</property>
4)在yarn-site.xml文件启用日志聚集的功能
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
5)设置HDFS上日志的保存时间
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
</property>
配置完之后首先对namenode进行格式化
出现successfully formatted格式化成功
启动hdfs服务
sbin/start-dfs.sh
启动yarn服务
sbin/start-yarn.sh
启动完毕后jps查看服务
伪分布式搭建完毕。完全分布式跟伪分布式的区别就在于伪分布式是一台机器而完全分布式是多台机器把任务分配下去每台机器干每台机器的事情。
因为一台机器的运行是有限度的,分配给多台各干各的谁有空谁干。