Hadoop集群搭建 目录 Hadoop集群搭建1 目录1 1、 基础集群环境搭建1 1.1、 安装JDK1 1.2、 修改主机名称,关闭防火墙2 1.3、 添加内网域名映射2 1.4、 配置免密码登录2 2、 Hadoop集群环境安装3 2.1、Hadoop版本选择3 2.2、安装Hadoop3 2.2.1、Hadoop伪分布式模式安装3 2.2.2、Hadoop分布式集群安装4 3、 集群初步使用7 3.1、Hadoop集群启动7 3.2、HDFS集群初步使用7 4、 Hadoop集群安装高级知识7 4.1、Hadoop HA 安装7 1、 基础集群环境搭建 1.1、 安装JDK 1、 上传jdk-8u151-linux-x64.tar.gz /usr rz 2、 解压到usr目录下 tar -zxvf jdk-8u151-linux-x64.tar.gz mv jdk原名 jdk1.8.0 (便于后期输入) 3、 配置环境变量 (1) vim /etc/profile (2) 在最后加入: JAVA_HOME=/usr/java1.8 PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH (3) 保存退出 4、 source /etc/profile 5、 检测是否安装成功,输入命令:java -version 做完以上步骤,可以开始克隆虚拟机。因为以上系统的配置,都是一些基础性的操作。都是必须的 1.2、 修改主机名称,关闭防火墙 1、 root账号下使用命令:hostnamectl set-hostname hadoop02 2、 Xshell关闭连接窗口,重新连接即可更改过来 3、 关闭防火墙(CentOS7) (1) firewall-cmd --state #查看防火墙状态 (2) systemctl stop firewalld.service #停止firewall (3) systemctl disable firewalld.service #禁止firewall开机启动 三台都做 1.3、 添加内网域名映射 1、 修改配置文件:vim /etc/hosts 发送到另外两台上面 1.4、 配置免密码登录 1、 在root登录状态下,输入命令 ssh-keygen 或者 ssh-keygen -t rsa 三台都要 2、 之后你会发现,在/root/.ssh 目录下生成了公钥文件 3、 使用一个简单的方式,使用命令: ssh-copy-id hadoop02 建立hadoop01到hadoop02的免密码登录,三台都做,包括免密自己 2、 Hadoop集群环境安装 2.1、Hadoop版本选择 1、Apache官方版本: 1.X 2.X2.6.52.7.53.0.1 2、商业发行版本 提供完善的管理系统,修复bug可能会领先于官方版本 Cloudera公司的CDH:5.7.X 2.2、安装Hadoop 2.2.1、Hadoop伪分布式模式安装(不弄) Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的Java进程来运行,节点即作为NameNode也作为DataNode,同时,读取的是HDFS中的文件。 Hadoop的配置文件位于hadoop-2.7.5/etc/hadoop/文件夹中,伪分布式需要修改两个配置文件core-site.xml和hdfs-site.xml(其中hdfs-site.xml用来配置数据块的副本数量,对于伪分布式来说,不管你配置几个副本数量,它始终都只有一个副本,所以可以不用管)。Hadoop分配置文件是xml格式,每个配置文件以声明property的name和value的方式来实现 1、 修改hadoop-env.sh配置文件,添加jdk安装目录 [
[email protected] hadoop]# vim hadoop-env.sh 2、 修改core-site.xml fs.defaultFS hdfs://hadoop01:9000 hadoop.tmp.dir /opt/hadoop-2.7.5/temp 3、 修改slaves hadoop01 4、 添加hadoop环境变量:vim /etc/profile HADOOP_HOME=/home/hadoop-2.7.5 PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export HADOOP_HOME PATH 5、 格式化namenode [
[email protected] hadoop]#hadoop namenode -format 6、 启动hdfs [
[email protected] hadoop]#start-dfs.sh 7、 检查是否启动成功 (1) 利用jps工具检测各进程是否启动成功 (2) 利用web UI 查看http://hadoop01:50070 2.2.2、Hadoop分布式集群安装 集群规划: HDFS YARN hadoop01 NameNode+DataNode 主节点 NodeManager hadoop02 DataNode+SecondaryNamenode NodeManager hadoop03 DataNode NodeManager+ResourceManager主节点 总共三个datanode节点,设置副本数为2,是为了观察数据块分布方便,各自可根据自身机器决定。 具体步骤: 1、 上传安装包,并解压到相关目录 //tar -zxvf hadoop-2.7.5.tar.gz -C /home/ /usr rz tar -zxvf hadoop-2.7.5.tar.gz 2、 主要配置文件的配置 1. 修改hadoop-env.sh export JAVA_HOME=/usr/jdk1.8 2. 修改core-site.xml fs.defaultFS hdfs://hadoop01:9000 hadoop.tmp.dir /opt/hadoop-2.7.5/temp 3. 修改hdfs-site.xml dfs.namenode.http-address hadoop01:50070 dfs.namenode.secondary.http-address hadoop02:50090 dfs.namenode.name.dir /opt/hadoop-2.7.5/hdfs/name dfs.replication 2 dfs.datanode.data.dir /opt/hadoop-2.7.5/hdfs/data dfs.permissions false 4. 修改mapred-site.xml(集群中只有mapred-site.xml.template,可以从这个文件进行复制,或者直接改名也可以) mapreduce.framework.name yarn 5. 修改yarn-site.xml yarn.resourcemanager.hostname hadoop03 yarn.nodemanager.aux-services mapreduce_shuffle 6. 修改slaves文件,添加以下内容,该内容是从节点列表,把上面的localhost去掉 hadoop01 hadoop02 hadoop03 8、 添加hadoop环境变量:vim /etc/profile HADOOP_HOME=/home/hadoop-2.7.5 PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export HADOOP_HOME PATH 3、 分发安装包到各个节点,Hadoop的每个节点都需要hadoop安装包 scp -r hadoop-2.7.5
[email protected]:$PWD scp -r hadoop-2.7.5
[email protected]:$PWD 分发profile到各个节点 同时在三台上 source /etc/profile 4、 在HDFS主节点上执行命令进行初始化namenode hadoop namenode -format 5、 在HDFS主节点上启动HDFS,其实在哪个节点启动并无关系 start-dfs.sh 结果:在主节点启动了NameNode守护进程 在从节点启动了DataNode守护进程 在配置的一个特定节点上会启动SecondaryNameNode进程 用jps检查线程,正常情况下是 master 有 name data node01 有 data secondary node02 有 data 6、 检测集群是否启动成功 1、 检测hdfs是否启动成功 hadoop fs -ls / 2、 Hdfs集群信息web管理界面地址 http://hadoop01:50070 1.如果遇到一台都没有的情况,可能是信息不对称的情况,可以先查看jps 并且杀死所有线程 Kill -9 线程编号 或者直接 stop-dfs.sh 关掉集群 然后再去删 /opt/Hadoop-2.7.5 再重新格式化 cd /opt/ rm -rf hadoop-2.7.5 三台都把opt目录下的 hadoop-2.7.5删掉 重新初始化 hadoop namenode -format 在用jps查看线程 3、 集群初步使用 3.1、Hadoop集群启动 DFS集群启动:start-dfs.sh DFS集群关闭:stop-dfs.sh YARN集群启动:start-dfs.sh YARN集群关闭:stop-dfs.sh 3.2、HDFS集群初步使用 查看集群文件:hadoop fs -ls / 上传文件:hadoop fs -put filepath destpath 下载文件:hadoop fs -get destpath 创建文件夹:hadoop fs -mkdir /hadoopdata 查看文件内容:hadoop fs -cat /hadoopdata/myfile.txt 4、 Hadoop集群安装高级知识 4.1、Hadoop HA 安装 为什么会有hadoop HA机制? HA:High Available 高可用。 在hadoop2.0之前,在HDFS集群中NameNode存在单节点故障(SPOF:A Single Point of Failure)。对于只有一个NameNode的集群,如果NameNode机器出现故障(比如宕机或是软件、硬件升级),那么整个集群将无法使用,直到NameNode重新启动。 那如何解决? HDFS中HA功能通过配置Active/Standby两个NameNodes。在任何时间点,确保NameNodes中只有一个处于Active状态,其他处在Standby状态。其中ActiveNameNode负责集群中的所有客户端操作,StandbyNameNode仅仅充当备机,保证一旦ActiveNameNode出现问题能够快速切换。 为了能够实时同步 Active 和 Standby 两个 NameNode 的元数据信息(实际上 editlog),需提 供一个共享存储系统,可以是 NFS、QJM(Quorum Journal Manager)或者 Zookeeper,Active Namenode 将数据写入共享存储系统,而 Standby 监听该系统,一旦发现有新数据写入,则 读取这些数据,并加载到自己内存中,以保证自己内存状态与 Active NameNode 保持基本一 致,如此这般,在紧急情况下 standby 便可快速切为 active namenode。为了实现快速切换, Standby 节点获取集群的最新文件块信息也是很有必要的。为了实现这一目标,DataNode 需 要配置 NameNodes 的位置,并同时给他们发送文件块信息以及心跳检测。 思考问题:SecondaryNameNode 和 Standby Namenode 的区别? — END — 创新 专业 高效 进取 共赢