二:hadoop集群搭建
1:Hadoop集群简介绍
hadoop集群具体包含两个集群,HDFS集群和YARN集群,两者逻辑上分离,但是物理上关联
HDFS集群负责海量数据的存储,其主要角色有
NameNode. DateNode SecondaryNameNode
YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:
ResoureeManager,NodeManager
mapreduce其实是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,打包运行在HDFS集群上,并且受到YARN集群的资源调度管理.
2:hadoop部署方式分为三种
1:独立模式
独立模式又称为单机模式,仅一个机器运行1个Java进程,主要用于调试.
2:伪分布模式
在一台机器上运行HDFS的NameNode和DateNode,Yarn的resourceManger和NodeManager,但分别启动单独的Java进程,主要用于调试
3:集群模式
主要用于生产环境的部署,会使用N太主机组成一个hadoop集群,这种部署模式下,主节点和从节点分开部署在不同的机器上
我们以3节点为例进行搭建,角色分配如下:
node-01 NameNode DataNode ResourceManager
node-02 DataNode NodeManaeer SecondaryNameNade
node-03 DataNode NodeManager
3:集群搭建环境准备
1服务器环境:
VMvare Workstation 10
centos 6.5
2:网络环境
采用NAT方式联网
确保各个服务器都能访问外网,如果不能访问,将无法同步服务器系统的网络时间
3:服务器系统设置
1:手动同步集群各个服务器时间
date -s '2019-04-30 10:56:00'
2:网络同步时间
yum install ntpdate
ntpdate cn.pool.ntp.org
3:设置主机名
vi /etc/sysconfig/network
4:host文件配置IP和主机名映射
vi /etc/hosts
192.168.72.129 server2 #应用服务器2
192.168.72.130 server3 #应用服务器3
192.168.72.132 server4 #应用服务器4
需要注释掉,不然就会显示一个本地节点
5:免密登录
ssh-keygen -t rsa 生成ssh免密登录秘钥
ssh-copy -id server3 将公钥拷贝到要免密登录的目标机器上
6:关闭防火墙
1:查看防火墙状态
service iptables status
2:关闭防火墙
service iptables stop
3:查看防火墙开机启动状态
chkconfig iptables --list
4:关闭防火墙开机启动
chkconfig iptables off
7:JDK的安装
java-version 查看
java/javac
4:hadoop集群编译
1:为什么需要编译
程序当中有一部分跟系统环境息息相关,文件的读写win还是Linux64或者32,要结合具体的系统环境下载源码进行编译
当需要自定义源码当中的某些组件的时候,需要修改源码,然后要重新编译成安装包
2:hadoop安装目录
三:hadoop配置文件的修改
1:配置文件路径
hadoop配置文件路径
/root/apps/hadoop-2.6.4/etc/hadoop
jdk的安装路径
/usr/local/jdk1.7.0_45/bin/java
2:配置文件修改
1:修改配置文件:hadoop-env.sh
配置JDK的环境变量
2:修改配置文件core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://server2:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hdpdata</value>
</property>
hadoop核心配置,指定hadoop所使用的文件系统schema(uri),HDFS的老大NameNode的地址.
指定hadoop运行时产生文件的存储目录
3:修改hdfs-site.xml配置文件副本数量
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http.address</name>
<value>serve2:50090</value>
</property>
4:修改配置文件mapred-site.xml
指定mapreduce运行时框架,这里指定在yarn上,默认是local
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5:修改yarn-site.xml配置文件
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>server2</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6:修改slaves文件
3:将hadoop添加到环境变量
vi /etc/profile
四:集群远程拷贝安装与格式化和启动
1:远程拷贝hadoop安装目录
scp -r /root/apps/hadoop-2.6.4/ root@server3:/root/apps/
2:拷贝环境变量配置文件
scp -r /etc/profile root@server3:/etc/
3:格式化
1:首次启动需要进行格式化
2:格式化本质是进行文件系统的初始化操作,创建一些自己需要的文件
3:格式化之后,集群启动成功,后续再也不需要进行格式化了
4:格式化本质是一些清理和准备工作,因此此时的HDFS在物理上还是不存在的
5:格式化操作在hdfs集群的主角色(server2)所在的机器上操作
格式化命令
hdfs namenode -format 或者
hadoop namenode -format
4:hadoop的启动
目录
cd apps/hadoop-2.6.4/sbin/
1:单节点启动
1:在主节点上使用以下命令启动HDFS NameNode;
hadoop-daemon.sh start namenode
2:在每个节点上使用以下命令启动HDFS DataNode;
hadoop-daemon.sh start datanode
3:在主节点上使用以下命令启动YARN ResourceManager;
yarn-daemon.sh start resourceManager
4:在每个从节点使用以下命令启动YARN nodemanager
yarn-daemon.sh start nodemanager;
以上脚本位于hadoop_home/sbin目录下,如果想要停止某个节点上某个角色,只需要把命令中的start改为stop即可
2:脚本一键启动
如果配置了 /root/apps/hadoop-2.6.4/etc/hadoop/slaves和免密登录,则可以使用脚本启动所有的hadoop两个集群的相关进程,在主节点设定机器上执行
hdfs
$HADOOP_PREFIX/sbin/start-dfs.sh
start-dfs.sh
yarn
$HADOOP_PREFIX/sbin/start-yarn.sh
start-yarn.sh
然后在主服务器上jps
然后在从服务器server3上jps
然后在从服务器server4上jps