1.HDFS架构
NomeNode --> DataNode
2.YARN架构
资源调度,管理
3.MapReduce计算架构
map:并行处理输入数据
reduce:对map结果进行汇总
shuffle连接map和reduc两个阶段
仅适合离线批处理:具有很好的容错性和扩展性;合适简单的批处理任务
缺点:启动开销大,过多是哟个磁盘导致效率低下等。
4.hadoo系统安装方式
单机模式;
单机伪分布模式;
集群分布模式;
5.伪分布式模式配置
条件:linux操作系统(cento os6)+在linux系统中安装java+虚拟机网络配置(关闭防火墙/虚拟机克隆网络配置)+普通用户登陆操作系统
配置步骤:
**系统环境准备
1、把网卡IP设置成静态 (NAT方式)
# ifconfig # 查看网卡IP
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes # 把网卡设置成开机启动
BOOTPROTO=static # 把DHCP改为static
IPADDR=192.168.17.129
NETMASK=255.255.255.0
GATEWAY=192.168.17.2
2、设置DNS
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=192.168.17.2 #第一个DNS设置成跟网关地址一样
DNS2=202.96.209.5
# service network restart # 把网络服务重启
3、修改主机名
** 集群内部一般主机名都是格式统一的
** hadoop里面主机名不支持下划线
bigdata1.com
# vi /etc/sysconfig/network
HOSTNAME=bigdata1.com
4、关闭防火墙、selinux
** 默认情况下,防火墙只开启了22号端口
# 关闭防火墙服务
# service iptables stop
# 设置成开机不启动
# chkconfig iptables off
# 关闭selinux
# vi /etc/sysconfig/selinux
SELINUX=disabled 把enforcing改成disabled
5、添加主机名的映射
** 后期需要时间主机名
# vi /etc/hosts
192.168.17.129 bigdata1.com
6、创建普通用户
** 后期所有操作都用该普通用户进行
# useradd bigdata
# echo 123456 | passwd --stdin bigdata
(xshell或者CRT)
** 安装JDK
$ su - root
# mkdir /opt/modules # 用于软件安装目录
# mkdir /opt/softwares # 用于软件下载目录
# chown bigdata:bigdata /opt/modules/
# chown bigdata:bigdata /opt/softwares/
$ tar zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
# vi /etc/profile (root用户)
## JAVA_HOME
JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
卸载系统自带的JDK
# rpm -qa | grep -i java
# rpm -e --nodeps tzdata-java-2012j-1.el6.noarch
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
---安装hadoop:-------------------------------------
将hadoop上传到linux系统中,并解压到对应文件夹中
$ tar zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C /opt/modules/---配置HDFS:----------------------------------------
** namenode
** datanode
修改解压后文件hadoop-2.5.0-cdh5.3.6/etc 文件夹下的下列文件(可以参考hadoop官网教程-->hadoop官网教程)
hadoop-env.sh文件
<!--将export JAVA_HOM=${JAVA_HOME}改为java的绝对路径,即:-->
export JAVA_HOME=/opt/modules/java/jdk1.7.0_67core-site.xml文件
<!--添加两个property属性-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<!--localhost为你的hostname本地主机名字-->
<!--声明存放数据的目录,下面代码在haddop下新建一个data文件存放数据--><property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0-cdh5.3.6/data</value>
</property>
hdfs-site.xml文件
<!--Block的副本数-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--数据块的副本数不能大于 datanode的节点数量-->
slaves文件
hostname
<!--本地主机名-->
** 声明哪些服务器是datanode** 每行一个主机名
命令行操作:
当前工作目录定位到hadoop文件夹下,执行以下命令:
$ bin/hdfs namenode -format
启动服务:
$ sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode
web控制台浏览器:
http://192.168.17.129:50070/
上传文件测试:
$ bin/hdfs dfs -mkdir /input 在根目录下新建一个input文件夹
$ bin/hdfs dfs -put wc.txt /input 存储文件 (bin/hdfs dfs -put 要上传的文件路径 目标文件夹路径)
$ bin/hdfs dfs -cat /input/wc.txt 查看文件 (bin/hdfs dfs -cat 需要查看的文件路径)
----配置yarn:--------------------------------------
** resourcemanager
** nodemanager
yarn-env.sh mapred-env.sh文件:(顶部写入以下命令/opt/modules/jdk1.7.0_67为jdk的绝对路径)
export JAVA_HOME=/opt/modules/jdk1.7.0_67
yarn-site.xml文件 (将bigdata1.com改为本地主机名称)
<!-- NodeManager获取数据的方式是shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata1.com</value>
</property>
mapred-site.xml文件(在/ect文件夹下复制mapred-site.xml.template并改名为mapred-site.xml保存到/etc文件夹下)
<!--mapreduce计算模型运行在yarn平台-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
启动yarn
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
运行一个mapreduce任务测试:
** 利用官方自带的jar包,进行文件的单词统计
$ bin/yarn jar share/hadoop/mapreduce/
hadoop-mapreduce-examples-2.5.0.jar wordcount /input/ /output
删除hdfs上的文件:
bin/hdfs dfs -rm /input/tt.txt
** 原文件分隔符是\t
** /input 表示输入路径
** /output 表示输出路径,必须要不存在
** 都是HDFS里面的路径
查看结果
bin/hdfs dfs -cat /output/par*
配置日志服务器:--------------------------------------
yarn-site.xml文件
<!--启用日志聚合功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--日志保存时间-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
mapred-site.xml文件
<!--进程通信-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata1.com:10020</value>
</property>
<!--客户端访问入口-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata1.com:19888</value>
</property>
重启yarn服务
$ sbin/yarn-daemon.sh stop resourcemanager
$ sbin/yarn-daemon.sh stop nodemanager
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
启动historyserver服务
$ sbin/mr-jobhistory-daemon.sh start historyserver
重新执行wordcount,查看日志,需要重新指定输出目录
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input/
/output2