大数据的发展历史
3V:volume、velocity、variety(结构化和非结构化数据)、value(价值密度低)
大数据带来的技术挑战
- 存储容量不断增加
- 获取有价值的信息的难度:搜索、广告、推荐
- 大容量、多类型、高时效的数据处理场景,使得从数据中获取有价值的信息变得非常困难
hadoop理论概述
hadoop发展简史
- apache nutch项目,是一个开源网络搜索引擎
- 谷歌发表GFS,是HDFS的前身
- 谷歌发表了mapreduce分布式编程思想
- nutch开源实现了mapreduce
hadoop简介
- 是apache软件基金会下的一个开源分布式计算平台
- java语言,跨平台性
- 在分布式环境下提供了海量数据的处理能力
- 几乎所有厂商都围绕hadoop提供开发工具
hadoop核心
- 分布式文件系统HDFS
- 分布式计算MapReduce
hadoop特性
- 高可靠性
- 高效性
- 高可扩展性
- 高容错性
- 成本低
- linux
- 支持多种编程语言
hadoop生态系统
- HDFS:分布式文件系统
- mapreduce:分布式并行编程模型
- yarn:资源管理和调度器
- tez运行在yarn之上的下一代hadoop查询处理框架,他会将很多的mr任务分析优化后构建一个邮箱无环图,保证最高的工作效率
- hive:hadoop上的数据仓库
- hbase:非关系型分布式数据库
- pig:基于hadoop的大规模数据分析平台
- sqoop:用于在hadoop与传统数据库之间进行数据传递
- oozie:工作流管理系统
- zookeeper:提供分布式协调一致性服务
- storm:流计算框架
- flume:分布式海量日志采集、聚合和传输的系统
- ambari:快速部署工具
- kafka:分布式发布订阅消息系统,可以处理消费者规模的网站中所有动作流数据
- spark:类似于hadoop mapreduce的通用并行框架
hadoop伪分布模式安装
主要流程
- 创建用户及用户组
sudo useradd -d /home/zhangyu -m zhangyu sudo passwd zhangyu sudo usermod -G sudo zhangyu su zhangyu ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys ssh localhost
- 创建apps和data目录并修改权限
sudo mkdir /apps sudo mkdir /data sudo chown -R zhangyu:zhangyu /apps sudo chown -R zhangyu:zhangyu /data
- 下载hadoop和java
mkdir -p /data/hadoop1 cd /data/hadoop1 wget java wget hadoop tar -xzvf jdk.tar.gz -C /apps tar -xzvf hadoop.tar.gz -C /apps cd /apps mv jdk java mv hadoop hadoop
- 添加上面两个到环境变量
sudo vim ~/.bashrc export JAVA_HOME=/apps/java export PATH=JAVA_HOME/bin:$PATH export HADOOP_HOME=/apps/hadoop export PATH=HADOOP_HOME/bin:$PATH source ~/.bashrc java hadoop
- 修改hadoop配置文件
cd /apps/hadoop/etc/hadoop vim hadoop-env.sh export JAVA_HOME=/apps/java vim core-site.xml //追加 <property> <name>hadoop.tmp.dir</name> //临时文件存储位置 <value>/data/tmp/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> //hdfs文件系统的地址 <value>hdfs://localhost:9000</value> </property> mkdir -p /data/tmp/hadoop/tmp vim hdfs-site.xml <property> <name>dfs.namenode.name.dir</name> //配置元数据信息存储位置 <value>/data/tmp/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> //具体数据存储位置 <value>/data/tmp/hadoop/hdfs/data</value> </property> <property> <name>dfs.replication</name> //配置每个数据库备份数,要根据节点数决定 <value>1</value> </property> <property> <name>dfs.permissions.enabled</name> //配置hdfs是否启用权限认证 <value>false</value> </property>
- 将集群中slave角色的节点的主机名添加进slaves文件中
vim slaves //将集群中的slave角色的节点的主机名添加经slaves文件中 //目前只有一台节点,所以slaves文件内容只有localhost
- 格式化hdfs文件系统
hadoop namenode -format
- 输入jps查看hdfs相关进程是否启动
cd /apps/hadoop/sbin/ ./start-dfs.sh jps hadoop fs -mkdir /myhadoop1 hadoop fs -ls -R /
- 配置mapreduce
cd /apps/hadoop/etc/hadoop/ mv mapred-site.xml.template mapred-site.xml vim mapred-site.xml <property> <name>mapreduce.framework.name</name> //配置mapreduce任务所使用的框架 <value>yarn</value> </property>
- 配置yarn并且测试
vim yarn-site.xml <property> <name>yarn.nodemanager.aux-services</name> //指定所用服务器 <value>mapreduce_shuffle</value> </property> ./start-yarn.sh
- 执行测试
cd /apps/hadoop/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.4.5.jar pi 3 3
hadoop开发插件安装
mkdir -p /data/hadoop3 cd /data/hadoop3 wget http://192.168.1.100:60000/allfiles/hadoop3/hadoop-eclipse-plugin-2.6.0.jar cp /data/hadoop3/hadoop-eclipse-plugin-2.6.0.jar /apps/eclipse/plugins/
- 进入图形界面
window->open perspective->other 选择map/reduce 点击condole右上角蓝色的大象添加相关配置
- 终端命令行
cd /apps/hadoop/sbin ./start-all.sh
hadoop常用命令
开启、关闭hadoop
cd /apps/hadoop/sbin ./start-all.sh cd /apps/hadoop/sbin ./stop-all.sh
命令格式
hadoop fs -命令 目标 hadoop fs -ls /user
查看版本
hdfs version hdfs dfsadmin -report //查看系统状态
目录操作
hadoop fs -ls -R / hadoop fs -mkdir /input hadoop fs -mkdir -p /test/test1/test2 hadoop fs -rm -rf /input
文件操作
hadoop fs -touchz test.txt hadoop fs -put test.txt /input //把本地文件上传到input文件加下 hadoop fs -get /input/test.txt /data //把hadoop集群中的test文件下载到data目录下 hadoop fs -cat /input/test.txt hadoop fs -tail data.txt //同cat hadoop fs -du -s /data.txt //查看文件大小 hadoop fs -text /test1/data.txt //将源文件输出为文本格式 hadoop fs -stat data.txt //返回指定路径的统计信息 hadoop fs -chown root /data.txt //改变文件所有者 hadoop fs -chmod 777 data.txt //赋予文件777权限 hadoop fs -expunge //清空回收站
模式切换
hdfs dfsadmin -safemode enter hdfs dfsadmin -safemode leave