本篇文章主要介绍在windows下和mac系统下搭建hadoop单机/伪分布式搭建配置。
推荐文章:
mac下基于centons7安装配置apache hadoop
大数据入门教程系列之Hadoop环境搭建--新建Hadoop用户(用于环境配置和hadoop安装)
单机和伪分布式区别:
单机模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。hadoop完全分布式:3个及以上的实体机或者虚拟机组件的机群。通过分析bin/hadoop脚本可知,-jar并不是bin/hadoop脚本定义的参数,此脚本会把-jar作为Java的参数,Java的-jar参数表示执行一个Jar文件(这个Jar文件必须是一个可执行的Jar,即在MANIFEST中定义了主类),此时外部定义的classpath是不起作用的,因而会抛出java.lang.NoClassDefFoundError异常。而jar是bin/hadoop脚本定义的参数,会调用Hadoop自己的一个工具类RunJar,这个工具类也能够执行一个Jar文件,并且外部定义的classpath有效。
伪分布模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode),请注意分布式运行中的这几个结点的区别:从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。
详细步骤:
1、下载
2、上传
先新建个目录用于存放hadoop软件安装(使用toor用户新建)
3、解压
sudo tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
重命名
sudo mv ./hadoop-2.7.6/ ./hadoop
修改hadoop文件夹到所属者(使用root用户)
chown -hR hadoop /usr/local/hadoop/
修改hadoop文件夹到所属者(使用root用户)
chgrp -hR hadoop /usr/local/hadoop/
检查hadoop是否可用(需要先配置第四步)
4、配置hadoop环境变量
vim ~/.bashrc
# 让环境变量立即生效
source ~/.bashrc
export JAVA_HOME=/usr/java/jdk1.8.0_151
export HADOOP_HOME=/usr/local/hadoop # hadoop的安装目录,替换为你的hadoop的安装目录
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
5、使用hadoop
systemctl status firewalld # 查看防火墙状态
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 禁止防火墙开机自启动
getenforce # 查看守护进程状态
setenforce 0 # 临时关闭守护进程
永久关闭守护进程,笔者使用的此方法
vim /etc/selinux/config
修改此处
SELINUX=disabled
到此hadoop环境已经安装配置完成,接下来使用之前需要做2件事(使用root用户)
systemctl stop firewalld 关闭防火墙
getenforce 查看selinux守护进程
setenforce 0 关闭selinux守护进程
伪分布式配置
6、修改配置文件(建议下到本地修改后上传覆盖)
①修改core-site.xml,在configuration节点下添加如下内容
<!-- Hadoop 文件系统的临时目录(NameNode和DataNode默认存放在hadoop.tmp.dir目录)-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
<!-- 配置NameNode的URI -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
②修改hdsf-site.xml,在configuration节点下添加如下内容
<!-- Master可替换为IP -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50070</value>
</property>
<!-- 设置系统里面的文件块的数据备份个数,默认是3 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- NameNode结点存储hadoop文件系统信息的本地系统路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<!-- DataNode结点被指定要存储数据的本地文件系统路径,这个值只对NameNode有效,DataNode并不需要使用到它 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
③修改mapred-site.xml,在configuration节点下添加如下内容
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>
</property>
④修改yarn-site.xml,在configuration节点下添加如下内容
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.234.136</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
7、启动
①格式化namenode
hdfs namenode -format
Exiting with status 0 表示成功
②开启namenode和datanode进程
start-dfs.sh和start-all.sh区别
https://blog.csdn.net/zhang0558/article/details/53169204
start-dfs.sh
start-all.sh(方式2)
方式1
没配置ssh免密,都直接输即可
jps查看进程NameNode和NameNode表示成功
③启动成功后,在浏览起中输入http://Master:50070查看NameNode和DataNode的相关信息,还可以在线查看HDFS中的文件。
stop-dfs.sh
停止