目录
目录
一、Hadoop部署的三种方式
1、Standalone mode(独立模式)
2、Pseudo-Distributed mode(伪分布式模式)
3、Cluster mode(集群模式)
二、准备工作
1、/etc/hosts
2、关闭防火墙和禁用swap交换分区
3、三台机器间免密
4、安装jdk
5、下载好hadoop安装包
三、开始安装Hadoop
1、解压
2、配置hadoop
3、初始化和启动操作
四、集群的页面访问
1、查看NameNode页面地址
2、YARN访问
3、JobHistory访问
五、测试
1、查看目录
2、创建目录
3、上传文件
一、Hadoop部署的三种方式
1、Standalone mode(独立模式)
独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。
2、Pseudo-Distributed mode(伪分布式模式)
伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。
3、Cluster mode(集群模式)
单Namenode节点模式-高可用HA模式
集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。
本教程主要安装 单Namenode 节点 非高可用集群模式
二、准备工作
集群组建 | Master | Slave1 | Slave2 |
NameNode | 是 | ||
Secondary Namenode | 是 | ||
DataNode | 是 | 是 | 是 |
ResourceManager | 是 | ||
NodeManager | 是 | 是 |
1、/etc/hosts
172.30.1.56 master
172.30.1.57 slave1
172.30.1.58 slave2
2、关闭防火墙和禁用swap交换分区
1)关闭防火墙和SeLinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
2)禁用swap交换分区
swapoff -a && sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
3、三台机器间免密
生成密钥
ssh-keygen -t rsa
将密钥复制到其他机器
ssh-copy-id slave1
ssh-copy-id slave2
4、安装jdk
将jdk目录复制到/usr/local
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
java -version
查看结果
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
5、下载好hadoop安装包
下载地址
Apache Hadoop
三、开始安装Hadoop
1、解压
tar zxvf hadoop-3.2.1.tar.gz -C /usr/local
vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop-3.2.1
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
source /etc/profile
测试
hadoop version
Hadoop 3.2.1
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842
Compiled by rohithsharmaks on 2019-09-10T15:56Z
Compiled with protoc 2.5.0
From source with checksum 776eaf9eee9c0ffc370bcbc1888737
This command was run using /usr/local/hadoop-3.2.1/share/hadoop/common/hadoop-common-3.2.1.jar
2、配置hadoop
创建数据目录
mkdir -p /data/bigdata/hadoop/tmp
mkdir -p /data/bigdata/hadoop/var
mkdir -p /data/bigdata/hadoop/dfs/name
mkdir -p /data/bigdata/hadoop/dfs/data
cd /usr/local/hadoop-3.2.1/etc/hadoop
修改配置hadoop-env.sh
JAVA_HOME 和 HADOOP_HOME改为真实路径
在最后面添加
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
修改core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<description>HDFS 的 URI,文件系统://namenode标识:端口</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/bigdata/hadoop/tmp</value>
<description>namenode 上传到 hadoop 的临时文件夹</description>
</property>
</configuration>
修改works
master
slave1
slave2
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/bigdata/hadoop/dfs/name</value>
<description>datanode 上存储 hdfs 名字空间元数据</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/bigdata/hadoop/dfs/data</value>
<description>datanode 上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>副本个数,默认配置是 3,应小于 datanode 机器数量</description>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
先将mapred-site.xml.template copy 一份命名为mapred-site.xml
再修改mapred-site.xml为
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/data/bigdata/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<description>The http address of the RM web application.</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
<discription>每个节点可用内存,单位MB,默认8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
/usr/local/hadoop-3.2.1/etc/hadoop,
/usr/local/hadoop-3.2.1/share/hadoop/common/*,
/usr/local/hadoop-3.2.1/share/hadoop/common/lib/*,
/usr/local/hadoop-3.2.1/share/hadoop/hdfs/*,
/usr/local/hadoop-3.2.1/share/hadoop/hdfs/lib/*,
/usr/local/hadoop-3.2.1/share/hadoop/mapreduce/*,
/usr/local/hadoop-3.2.1/share/hadoop/mapreduce/lib/*,
/usr/local/hadoop-3.2.1/share/hadoop/yarn/*,
/usr/local/hadoop-3.2.1/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
注意:端口号与里面的值,后期优化配置需要修改,第一次配可以全复制。
说明:yarn.nodemanager.vmem-check-enabled这个的意思是忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是实体机上,并且内存够多,可以将这个配置去掉
再将配置好的hadoop文件和/etc/pofile直接copy到另外的节点,并source /etc/profile,相当于在另外两个节点重复以上操作
3、初始化和启动操作
主节点在启动之前需要先格式化namenode,生成初始目录.
hadoop namenode -format
有如下提示即成功。
启动hadoop
/usr/local/hadoop-3.2.1/sbin/start-all.sh
或者使用: start-dfs.sh 启动HDFS 和 start-yarn.sh 启动Yarn
启动历史任务服务进程
mr-jobhistory-daemon.sh start historyserver
检查各个节点进程是否启动成功
停止集群:
stop-dfs.sh、stop-yarn.sh、mr-jobhistory-daemon.sh stophistoryserver
启动之后,使用jps命令查看相关服务是否启动,jps是显示Java相关的进程命令。
四、集群的页面访问
1、查看NameNode页面地址
一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述:
http://master:9870/
旧版本端口为50070,新版本3.2.1为9870
当然也可以在hdfs-site.xml中配置dfs.namenode.http-address项
2、YARN访问
http://master:8088/cluster
3、JobHistory访问
http://master:19888/jobhistory
五、测试
1、查看目录
hadoop fs -ls /
2、创建目录
hadoop fs -mkdir /test
3、上传文件
hadoop fs -put a.txt /test/a.txt