一、Hadoop基本介绍 Hadoop优点 1.高可靠性:Hadoop按位存储和处理数据 2.高扩展性:Hadoop是在计算机集群中完成计算任务,这个集群可以方便的扩展到几千台 3.高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度快 4.高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配 5.低成本:Hadoop是开源的,集群是由廉价的PC机组成 Hadoop架构和组件 Hadoop是一个分布式系统基础架构,底层是HDFS(Hadoop Distributed File System)分布式文件系统,它存储Hadoop集群中所有存储节点上的文件(64MB块),HDFS上一层是MapReduce引擎(分布式计算框架),对分布式文件系统中的数据进行分布式计算。 1.HDFS架构 NameNode:Hadoop集群中只有一个NameNode,它负责管理HDFS的目录树和相关文件的元数据信息 Sencondary NameNode:有两个作用,一是镜像备份,二是日志与镜像定期合并,并传输给NameNode DataNode:负责实际的数据存储,并将信息定期传输给NameNode 2.MapReduce架构(Hadoop0.23以后采用MapReduce v2.0或Yarn) Yarn主要是把jobtracker的任务分为两个基本功能:资源管理和任务调度与监控,ResourceManager和每个节点(NodeManager)组成了新处理数据的框架。 ResourceManager:负责集群中的所有资源的统一管理和分配,接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各种应用程序(ApplicationMaster)。 NodeManager:与ApplicationMaster承担了MR1框架中的tasktracker角色,负责将本节点上的资源使用情况和任务运行进度汇报给ResourceManager。
MapReduce v1.0框架(图1)
MapReduce v2.0框架(图2)
环境介绍: master-hadoop 192.168.0.201 slave1-hadoop 192.168.0.202 slave2-hadoop 192.168.0.203 Hadoop三种运行方式:单节点方式(单台)、单机伪分布方式(一个节点的集群)与完全分布式(多台组成集群) 二、准备环境 1.Hadoop是用Java开发的,必须要安装JDK1.6或更高版本 2.Hadoop是通过SSH来启动slave主机中的守护进程,必须安装OpenSSH 3.Hadoop更新比较快,我们采用最新版hadoop2.3来安装 4.配置对应Hosts记录,关闭iptables和selinux(过程略) 5.创建相同用户及配置无密码认证 三、安装环境(注:三台配置基本相同)
1.安装JDK1.7
[iyunv@master-hadoop ~]# tar zxvf jdk-7u17-linux-x64.tar.gz [iyunv@master-hadoop ~]# mv jdk1.7.0_17/ /usr/local/jdk1.7 [iyunv@slave1-hadoop ~]# vi/etc/profile #末尾添加变量 JAVA_HOME=/usr/local/jdk1.7 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib export JAVA_HOME CLASSPATHPATH [iyunv@slave1-hadoop ~]#source /etc/profile [iyunv@slave1-hadoop ~]# java-version #显示版本说明配置成功 java version"1.7.0_17" Java(TM) SE RuntimeEnvironment (build 1.7.0_17-b02) Java HotSpot(TM) 64-BitServer VM (build 23.7-b01, mixed mode) 2.创建hadoop用户,指定相同UID [iyunv@master-hadoop ~]#useradd -u 600 hadoop [iyunv@master-hadoop ~]#passwd hadoop Changing password for userhadoop. New password: Retype new password: passwd: all authenticationtokens updated successfully. 3.配置SSH无密码登录(注:master-hadoop本地也要实现无密码登录)
[iyunv@master-hadoop ~]# su - hadoop [hadoop@master-hadoop ~]$ ssh-keygen -t rsa #一直回车生成密钥 [hadoop@master-hadoop ~]$ cd/home/hadoop/.ssh/ [hadoop@master-hadoop .ssh]$ ls id_rsa id_rsa.pub [hadoop@slave1-hadoop ~]$ mkdir /home/hadoop/.ssh #登录两台创建.ssh目录 [hadoop@slave2-hadoop ~]$ mkdir /home/hadoop/.ssh [hadoop@master-hadoop .ssh]$ scp id_rsa.pub hadoop@slave1-hadoop:/home/hadoop/.ssh/ [hadoop@master-hadoop .ssh]$ scp id_rsa.pub hadoop@slave2-hadoop:/home/hadoop/.ssh/ [hadoop@slave1-hadoop ~]$ cd/home/hadoop/.ssh/ [hadoop@slave1-hadoop .ssh]$ cat id_rsa.pub >> authorized_keys [hadoop@slave1-hadoop .ssh]$ chmod 600 authorized_keys [hadoop@slave1-hadoop .ssh]$ chmod 700 ../.ssh/ #目录权限必须设置700 [iyunv@slave1-hadoop ~]# vi /etc/ssh/sshd_config #开启RSA认证 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys [iyunv@slave1-hadoop ~]# service sshd restart 四、Hadoop的安装与配置(注:三台服务器配置一样,使用scp复制过去)
[iyunv@master-hadoop ~]# tar zxvf hadoop-2.3.0.tar.gz -C /home/hadoop/ [iyunv@master-hadoop ~]# chown hadoop.hadoop -R /home/hadoop/hadoop-2.3.0/ [iyunv@master-hadoop ~]# vi /etc/profile #添加hadoop变量,方便使用 HADOOP_HOME=/home/hadoop/hadoop-2.3.0/ PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_HOME PATH [iyunv@master-hadoop ~]# source /etc/profile 1. hadoop-env.sh设置jdk路径
[hadoop@master-hadoop ~]$ cd hadoop-2.3.0/etc/hadoop/ [hadoop@master-hadoop hadoop]$ vi hadoop-env.sh export JAVA_HOME=/usr/local/jdk1.7/ 2.slaves设置从节点 [hadoop@master-hadoophadoop]$ vi slaves slave1-hadoop slave2-hadoop 3.core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master-hadoop:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/tmp</value> </property> </configuration> 4.hdfs-site.xml <configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/dfs/name</value> </property> <property> <name>dfs.namenode.data.dir</name> <value>file:/home/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> #数据副本数量,默认3,我们是两台设置2 <value>2</value> </property> </configuration> 6.yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.address</name> <value>master-hadoop:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master-hadoop:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master-hadoop:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master-hadoop:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master-hadoop:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration> 7.mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master-hadoop:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master-hadoop:19888</value> </property> </configuration> 五、格式化文件系统并启动 1.格式化新的分布式文件系统(hdfs namenode -format) 2.启动HDFS文件系统并使用jps检查守护进程是否启动 可以看到master-hadoop已经启动NameNode和SecondaryNameNode进程,slave-hadoop已经启动DataNode进程说明正常。 3.启动新mapreduce架构(YARN) 可以看到master-hadoop已经启动ResourceManger进程,slave-hadoop已经启动NodeManager进程说明正常。 4.查看集群状态
|