Hadoop 介绍
-
Hadoop是Apache旗下的一个用java语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台。允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理
大规模数据:通常也就1PB以上吧.
-
Hadoop核心组件有
1.HDFS(分布式文件系统):解决海量数据存储 2.YARN(作业调度和集群资源管理的框架):解决资源任务调度 3.MAPREDUCE(分布式运算编程框架):解决海量数据计算
-
现在说Hadoop,一般都是指Hadoop生态圈.就是下面这张图片.
MAPREDUCE:分布式运算程序开发框架 HIVE:基于HADOOP的分布式数据仓库,提供基于SQL的查询数据操作 HBASE:基于HADOOP的分布式海量数据库 ZOOKEEPER:分布式协调服务基础组件 Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库 Oozie:工作流调度框架 Sqoop:数据导入导出工具(比如用于mysql和HDFS之间) Flume:日志数据采集框架 Impala:基于Hadoop的实时分析
-
Hadoop特性优点
1.**扩容能力**(Scalable):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。 2.**成本低**(Economical):Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。 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(群集模式),其中前两种都是在单机部署
-
集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上
hadoop1 NameNode DataNode ResourceManager hadoop2 DataNode NodeManager SecondaryNameNode hadoop3 DataNode NodeManager
-
准备工作:
- 同步linux系统时间 ntpdate cn.pool.ntp.org
- 设置主机名 vi /etc/sysconfig/network HOSTNAME=hadoop-1,其他系统格式相同.
- 配置IP、主机名映射 vi /etc/hosts 192.168.1.1 hadoop1 / ...2 hadoop2 / ...3 hadoop3. 其他linux设备相同
- 配置ssh免密登陆 生成秘钥 ssh-keygen ,把秘钥发送给其他机器. ssh-copy-id hadoop2
- 关闭防火墙 service iptables stop. 设置开机关闭 chkconfig iptables off
- 安装jdk.
-
开始安装
- 把hadoop压缩包上传到linux /export/software/目录下. 没有就创建目录
- 解压到/export/server/目录下
- 进入 /export/server/hadoop-2../etc/hadoop 目录下.
-
修改hadoop-env.sh 文件 . vi hadoop-env.sh .因为hadoop要在java环境下运行
export JAVA_HOME=#java环境变量的路径
-
修改core-site.xml文件 vi core-site.xml
<configuration> #<!-- 设置Hadoop的文件系统,由URI指定 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> #/export/data/hddata 需要自己创建目录 <value>/export/data/hddata</value> </property> </configuration>
-
修改hdfs-site.xml 文件
<configuration> <!-- HDFS副本的数量 --> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop1:50090</value> </property> </configuration>
-
修改mapred-site.xml文件 vi mapred-site.xml
<configuration> #<!-- mr运行时框架,这里指定在yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
修改 yarn-site.xml 文件 vi yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
- 修改slaves 文件 vi slaves ,用于一键启动
添加 hadoop1 hadoop2 hadoop3 .分3行写. - 设置hadoop环境变量
vi /etc/profile
export HADOOP_HOME= #hadoop安装路径,到bin上级目录
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新文件 source /etc/profile - 启动前要格式化一下. 执行 hdfs namenode–format
- 一键启动 start-all.sh .一键停止 stop-all.sh
启动后,hadoop1 执行 jps命令查看是否启动成功. 成功显示这几个进程.
NameNode,ResourceManager,DataNode,SecondaryNameNode,NodeManager
hadoop2 和 hadoop3显示 NodeManager DataNode 进程.
启动成功后 ,浏览器打开http://(linux1的IP地址):50070 ,http://(linux1的ip地址):8088地址查看集群.
完毕!!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。