大数据离线(二)

Apache Hadoop

Hadoop介绍


狭义上来说,Hadoop 就特指 Apache 这款开源框架,它的核心组件有:

  • HDFS(分布式文件系统):解决海量数据存储
  • YARN(作业调度和集群资源管理的框架):解决资源任务调度
  • MAPREDUCE(分布式运算编程框架):解决海量数据计算

广义上来说,HADOOP 通常是指一个更广泛的概念——HADOOP 生态圈。

  • HDFS:分布式文件系统
  • MAPREDUCE:分布式运算程序开发框架
  • HIVE:基于 HADOOP 的分布式数据仓库,提供基于 SQL 的查询数据操作
  • HBASE:基于 HADOOP 的分布式海量数据库
  • ZOOKEEPER:分布式协调服务基础组件
  • Mahout:基于 mapreduce/spark/flink 等分布式运算框架的机器学习算法库
  • Oozie:工作流调度框架
  • Sqoop:数据导入导出工具(比如用于 mysql 和 HDFS 之间)
  • Flume:日志数据采集框架
  • Impala:基于 HADOOP 的实时分析

Hadoop特性优点

  1. 扩容能力(Scalable)
  2. 成本低(Economical)
  3. 高效率(Efficient)
    通过并发数据,Hadoop 可以在节点之间动态并行的移动数据,使得速度非常快。
  4. 可靠性(Rellable)
    能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。

Hadoop集群搭建

集群简介

HADOOP 集群具体来说包含两个集群:HDFS 集群和 YARN 集群,两者逻辑上分离,但物理上常在一起。

  • HDFS 集群负责海量数据的存储,集群中的角色主要有:NameNode、DataNode、SecondaryNameNode
  • YARN 集群负责海量数据运算时的资源调度,集群中的角色主要有:ResourceManager、NodeManager

Hadoop 部署方式分三种,Standalone mode (独立模式)、Pseudo-Distributed mode(伪分布式模式)、Cluster mode(集群模式),以3 节点为例进行集群搭建,角色分配如下:

  • node1 NameNode DataNode ResourceManager
  • node2 DataNode NodeManager SecondaryNameNode
  • node3 DataNode NodeManager

服务器系统设置

  • 同步时间
#网络同步时间
ntpdate ntp6.aliyun.com
  • 设置主机名
vim /etc/sysconfig/network
  • 配置IP 、主机名
vim /etc/hosts
  • 配置ssh免密登入
#生成 ssh 免登陆密钥
ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成 id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登陆的目标机器上
ssh-copy-id node2
  • 配置防火墙
#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off
  • JDK环境安装
#上传 jdk 安装包
jdk-8u65-linux-x64.tar.gz
#解压安装包
tar zxvf jdk-8u65-linux-x64.tar.gz -C /root/apps
#配置环境变量 /etc/profile
export JAVA_HOME=/root/apps/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#刷新配置
source /etc/profile

hadoop集群搭建

#上传hadoop的安装包到服务器
hadoop-2.7.4-with-centos-6.7.tar.gz
#解压安装包
tar zxvf hadoop-2.7.4-with-centos-6.7.tar.gz -C /export/server/
#配置hadoop-env.sh
vim hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_65
#配置core-site.xml configuration标签
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:9000</value>
</property>

<!-- 指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name} -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/export/data/hadoopdata</value>
</property>
#配置hdfs-site.xml configuration标签
<!-- 指定HDFS副本的数量 -->
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
    
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:50090</value>
</property>
#配置mapred-site.xml configuration标签
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
#配置yarn-site.xml configuration标签
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node-21</value>
</property>
    
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
#配置slaves文件,里面写上从节点所在的主机名字
vim slaves
node1
node2
node3
#将hadoop添加到环境变量
vim /etc/proflie
export HADOOP_HOME=/export/server/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile
#格式化namenode(本质是对namenode进行初始化)
hdfs namenode -format (hadoop namenode -format)
        
#启动hadoop
先启动HDFS    sbin/start-dfs.sh
再启动YARN    sbin/start-yarn.sh
        
#验证是否启动成功
使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
    
http://192.168.81.130:50070 (HDFS管理界面)
http://192.168.81.130:8088 (MR管理界面)

猜你喜欢

转载自www.cnblogs.com/lifuwei/p/9375620.html