Hadoop关联项目
HBase:能支持结构化数据大表存储的可扩展的、分布式的数据库。
Hive:能够支持数据的汇总和临时查询的数据仓库基础框架。
ZooKeeper:一个分布式应用的高性能协调的服务。
Spark:一个快速和通用的计算Hadoop数据引擎。
核心
HDFS:Hadoop Distributed File System 分布式文件系统 MapReduce:分布式计算模型
Yarn:资源管理平台,在上面运行分布式计算,典型的计算模型有 MapReduce、Storm、Spark等
HDFS的架构: 负责对数据的分布式存储,主从结构
- 主节点——namenode
可以有2个,负责内容:
1)接收用户的请求操作,是用户操作的入口
2)维护文件系统的目录结构,称为命名空间 - 从节点——datanode
至少一个,只干一件事:存储数据
Yarn的架构: 是一个资源的调度和管理平台,也是主从结构 - 主节点——ResourceManager
可以有2个,主要负责:
1)集群资源的分配和调度
2)MR、Storm、Spark等应用,要想被RM管理,必须实现ApplicationMaster接口 - 从节点——NodeManager
可以有多个,主要就是单节点资源的管理。
MapReduce的架构:依赖于磁盘IO的批处理计算模型, - 只有一个主节点——MRAppMaster,主要负责:
1)接收客户端提交的计算任务
2)把计算任务分给NodeManager中的Container执行,即任务调度
3)监控Task的执行情况
环境搭建
安装linux环境
一、关闭防火墙
CentOS6:
1、关闭防火墙
]# service iptables stop
2、从开机启动项中关闭防火墙
]# chkconfig iptables off/on--打开
3、查看防火墙状态
]# service iptables status
4、查看防火墙的开机状态
]# chkconfig --list | grep iptables
CentOS7:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
systemctl list-unit-files|grep firewalld.service --防火墙处于关闭状态
二、主机名
]# vim /etc/sysconfig/network
修改其中的host
HOSTNAME=uplooking01
修改IP地址
注意:①勾选选项“Connect automatically”
勾选选项“Available to all users”
②删除其余的连接配置信息
③调整系统的时间
选择手动manual
添加IP地址(vim /etc/sysconfig/network-scripts/ifcfg-eth0)
编辑的内容:
DEVICE="eth0"
**BOOTPROTO=static
HWADDR="00:0C:29:73:2A:9B"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="8481efb8-9387-41a6-9c37-fbb554af7a78"
IPADDR=192.168.8.101
NETMASK=255.255.255.0
GATEWAY=192.168.8.2
DNS1=8.8.8.8
通过下面的命令:service network restart,让网络配置立马生效。
刷新
查看ip新配置的ip地址
[root@localhost Desktop]# ifconfig
看是否能够连接外网
ping www.baidu.com
配置域名映射:
]# vim /etc/hosts
加入一行内容:
192.168.8.101 uplooking01
显示隐藏文件:ls -a
删除文件:rm 文件名
同时在windows的域名映射文件C:/windows/System32/drivers/etc/hosts中加入:
192.168.8.101 uplooking01
关闭selinux,否则户影响软件的正常使用:
vim /etc/selinux/config
设置selinux=disabled
1、修改linux的启动模式
centos6 =
vim /etc/inittab
将模式从5修改为3
id:5:initdefault:---》id:3:initdefault:
重启linux系统
reboot
关机:poweroff
注意:在命令行模式下,通过命令init 5 指令切换回图形界面模式。
快捷键:ctrl+alt+f2 命令行
ctrl+alt+f1 图形
centos7 =
systemctl get-default #查看当前默认启动模式
systemctl set-default multi-user.target #更改启动模式为多用户命令行模式
其实这个命令只是更改了一个软链接而已,/etc/systemd/system/default.target是一个软链接文件,所链接的文件就是各启动模式的配置文件,
多用户命令行模式的文件是/usr/lib/systemd/system/multi-user.target,图形模式则是/usr/lib/systemd/system/graphical.target
三、使用客户端工具来操作linux系统
XshellXftpPortable
四、在Linux下面安装jdk
前提:创建目录soft
[root@uplooking01 opt]# mkdir soft
1、安装JDK
当前目录:/opt
1°、解压
opt]# tar -zxvf soft/jdk-8u112-linux-x64.tar.gz
2°、重命名:
opt]# mv jdk1.8.0_112/ jdk
3°、将JAVA_HOME配置到linux的环境变量里面:
vim /etc/profile.d/bigdata-etc.sh
加入以下内容:
export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME/bin
4°、让环境变量生效:
source /etc/profile.d/bigdata-etc.sh
5°、测试jdk是否安装成功:
java -version
Hadoop轻松安装前提~>配置ssh免密码登录:
进入到我的home目录
cd ~/.ssh
ssh-keygen -t rsa
一路回车
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上(.ssh/id_rsa.pub)
ssh-copy-id -i root@uplooking01
根据提示输入当前机器的密码
验证:ssh uplooking01 不需要再输入密码
需求:希望通过uplooking01机器上的root用户面密码登录到机器uplooking02上(192.168.8.102)
五、Hadoop的安装
1、Hadoop的安装
hadoop的版本:hadoop-2.6.4.tar.gz
1°、解压:
]# tar -zxvf /opt/soft/hadoop-2.6.4.tar.gz -C /opt/
2°、重命名:
opt]# mv hadoop-2.6.4/ hadoop
3°、添加hadoop相关命令到环境变量中
vim /etc/profile.d/hadoop-etc.sh
加入以下内容:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
目的:可以在任意路径下调用指定目录中的可执行文件(命令)
4°、创建数据存储目录:(-p:批量创建目录)
[root@uplooking01 opt]# mkdir -p /opt/hadoop-repo/name
[root@uplooking01 opt]# mkdir -p /opt/hadoop-repo/secondary
[root@uplooking01 opt]# mkdir -p /opt/hadoop-repo/data
[root@uplooking01 opt]# mkdir -p /opt/hadoop-repo/tmp
1) NameNode 数据存放目录: /opt/hadoop-repo/name
2) SecondaryNameNode 数据存放目录: /opt/hadoop-repo/secondary
3) DataNode 数据存放目录: /opt/hadoop-repo/data
4) 临时数据存放目录: /opt/hadoop-repo/tmp
5°、配置
要配置的文件
hadoop-env.sh
yarn-env.sh
hdfs-site.xml
core-site.xml
mapred-site.xml
yarn-site.xml
1)、配置hadoop-env.sh (脚本文件:/etc/profile.d/bigdata.sh中已经配置了名为JAVA_HOME的环境变量,此处不用配置了。)
export JAVA_HOME=/opt/jdk
2)、配置yarn-env.sh
export JAVA_HOME=/opt/jdk
3)、配置hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/hadoop-repo/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/hadoop-repo/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///opt/hadoop-repo/secondary</value>
</property>
<!-- secondaryName http地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>uplooking01:9001</value>
</property>
<!-- 数据备份数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 运行通过web访问hdfs-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!-- 剔除权限控制-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
4)、配置core-site.xml
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://uplooking01:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:///opt/hadoop-repo/tmp</value>
</property>
</configuration>
5)、配置mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN ,也就是“指定mr运行在yarn上”-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史job的访问地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>uplooking01:10020</value>
</property>
<!-- 历史job的访问web地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>uplooking01:19888</value>
</property>
<property>
<name>mapreduce.map.log.level</name>
<value>INFO</value>
</property>
<property>
<name>mapreduce.reduce.log.level</name>
<value>INFO</value>
</property>
</configuration>
6)、配置yarn-site.xml
<configuration>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>uplooking01</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>uplooking01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>uplooking01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>uplooking01:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>uplooking01:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>uplooking01:8088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
</configuration>
格式化hadoop文件系统
hdfs namenode -format
标志:Storage directory /opt/hadoop-repo/name has been successfully formatted.
启动hadoop
start-all.sh
分为以下
start-dfs.sh
start-yarn.sh
启动成功之后,通过java命令jps(java process status)会出现5个进程:
start-dfs.sh
NameNode
SecondaryNameNode
DataNode
单独启动进程:
hadoop-daemon.sh start datanode
start-yarn.sh
ResourceManager
NodeManager
单独启动进程:
yarn-daemon.sh start nodemanager
验证:
将本地编辑好的文件上传到hdfs上
hdfs dfs -put hello.txt /
1°、在命令中执行以下命令:
hdfs dfs -ls /
查看内容:
hdfs dfs -cat /hello.txt
hdfs dfs -text /hello.txt
2°、在浏览器中输入
http://uplooking01:50070 (HDFS管理界面)
http://uplooking01:8088 (MR管理界面)
3°、验证mr
/opt/hadoop/share/hadoop/mapreduce目录下面,执行如下命令:
yarn jar hadoop-mapreduce-examples-2.6.4.jar wordcount /hello.txt /out
hadoop-mapreduce-examples-2.6.4.jar:作者设计的很多例子
wordcount有一个java源程序编译好的类,该类有入口main,该类的名称是:wordcount
/hello :hdfs上待计算的资源
/out :计算结果输出的目录
查看内容:
hdfs dfs -cat /output/part-r-00000