Hadoop初识
-
狭义的Hadoop: 是一个舍和大数据分布式存储(HDFS)、分布式计算(MapReduce)和资源调度(YARN)的平台
-
广义Hadoop: 指的是Hadoop的生态系统,包含各种只解决某一个特定问题域的子系统,zk、hiv(sql查询)、pig(脚本)、R语言、Hbase、sqoop(将关系型数据库与hadoop的数据进行交换)、Flume(日志收集框架)
基础
- 定义
- 提供分布式的存储(一个文件被拆分成很多歌快,并且以副本的方式存储在各个节点中)和计算
- 是一个分布式的系统基础架构: 用户可以在不了解分布式底层细节的情况下进行使用
- 核心模块
- Hadoop Common
- Hadoop Distributed File System 【(HDFS) 分布式文件系统,将文件分布式存储在很多的服务器上】
- Hadoop YARN(作业调度资源管理)
- Haddop MapReduce(分布式计算框架,在很多机器上分布式并行计算)
HDFS
- 源自Google的GFS论文
- HDFS是GFS的克隆版
- HDFS的特点(扩展性、容错性、海量数据存储)
特性
- 将文件切分成指定大小的数据快,并以多副本的方式存储在多个机器上
- 块(block): 默认的blocksize是128M
- 副本: 默认3个副本
- 数据切分,多副本容错,操作对用户透明
MapReduce
- 源自Google的MapReduce论文
- MapReduce是Google MapReduce的克隆版
- MapReduce特点: 扩展性、容错性、海量数据离线处理
YARN
- YARN : Yet Another Resource Negotiiator
- 负责整个集群资源的管理和调度
- YARN特点: 扩展性、容错性、多框架资源统一调度
优势
- 高可靠性
- 数据存储: 数据多副本
- 运行可靠
- 搞扩展性
- 存储/计算资源不够时,可以横向的线性扩展机器
- 一个集群中可以包含数以千计的节点
- 成熟的生态圈
发行版本选择
- Apache
- 纯开源
- 不同版本、不同框架整合不方便
- CDH: https://www.cloudera.com
- cm (cloudera manager) 通过页面一键安装各种框架,方便升级,支持impala
- cm不开源,与社区版本有些出入
- Hortonworks: HDP
- 纯开源,支持tez,企业发布自己的数据平台可以直接基于页面框架改造
- 企业级安全不开源
- MapR
使用CDH安装
- CDH 相关软件包下载地址
http://archive.cloudera.com/cdh5/cdh/5/
- 使用版本:hadoop-2.6.0-cdh5.15.1
- Hadoop 下载
- JDK 下载
- hive 下载
安装
JDK 安装
- 拷贝JDK到虚拟机
scp jdk-8u201-linux-x64.tar.gz hadoop@172.16.114.132:~/software/
- 解压到~/app/ 目录
tar -zxvf jdk-8u201-linux-x64.tar.gz -C ~/app/
- 配置无密码登陆
- ssh-keygen -t rsa
- cat id_rsa.pub » authorized_keys
- chmod 600 authorized_keys
Hadoop安装
- 下载安装包拷贝到虚拟机
- 解压到对应目录
- 目录结构
- bin : hadoop客户端命令
- etc/hadoop : 相关配置文件目录
- sbin : 启动hadoop相关进程的脚本
- lib : 依赖包
- share : 常用例子
基础配置
- /etc/hadoop/hadoop-env.sh (配置JAVA_HOME)
- /etc/hadoop/core-site.xml (配置文件系统主节点)
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop000:8020</value>
</property>
- /etc/hadoop/hdfs-site.xml (配置文件副本系数)
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
默认文件存储目录在 /tmp/目录下,这个目录在重启的时候会清空
所以重新指定一下目录
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
- slaves (单机的时候修改 localhost为hadoop000(自己设置的))
启动
- 第一次执行的时候一定要格式化文件系统,不要重复执行(hdfs namenode -format)
- 启动集群 /sbin/start-dfs.sh
- 查看是否启动成功,输入命令 jps –> 显示应该有4个进程
- 启动日志 /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/logs/
- 启动成功过后默认hdfs端口为 50070,可浏览器访问,若访问不到,可能是防火墙原因
- 查看防火墙是否打开 firewall -cmd –state
- 若打开,可以将其关闭 sudo systemctl stop firewalld.service
- start/stop-dfs.sh 与 hadoop-daemons.sh的关系
- start/stop-dfs.sh 是后面那个命令的组合
- hadoop-daemons.sh start namenode
- hadoop-daemons.sh start datanode