hadoop学习笔记 day01 hadoop环境搭建和基本设置

大数据是什么

大数据是信息化发展的必然趋势:
人类的信息化发展日新月异,各种各样的人类活动(政务管理,商务活动,采矿、石油,交通、电商都信息化)都在快速信息化,产生的信息量(数据量)呈爆发式增长;

大数据是一种全新的思维方式:
通过大量数据的洞悉,可以获取更多之前没有发现的商业规律、行业规律,以更好地指导行业、商业的发展;

大数据是一种技术集合(分布式):
要处理海量(100T,100P,Z)的数据,利用传统的技术(mysql+sql+java)无法实现;所以有志之士们逐渐第为处理海量数据开发了越来越多的新技术和新工具;这一套用来处理海量数据的新技术和新工具的集合就是程序员眼中的大数据;

2.大数据具体应用场景
电商用户浏览、购物行为数据分析–》运营报表!商品推荐!营销策划!
精准广告推送

3.大数据技术解决方案
离线数据批处理方案:
HADOOP:
存储:HDFS
运算:MAPREDUCE + YARN

SPARK:
存储:HDFS
运算:Spark Core 、 Spark SQL

配套外围组件:HIVE FLUME SQOOP HBASE ZOOKEEPER

实时流式数据处理方案:
Storm:
SPARK:
存储:KAFKA
运算: Spark Streaming

FLINK:
存储:KAFKA
运算:Flink

配套外围组件:REDIS ELASTIC SEARCH

4.HADOOP – HDFS (hadoop 分布式文件系统)
hadoop distributed file system
HDFS导论
HDFS是什么?
是一个分布式文件系统(可以存文件、读取文件)

HDFS能用来干什么
能用来存储管理海量文件,以便于后续的数据分析!

HDFS是怎么工作的?

HDFS是一个分布式系统!

HDFS中的核心角色:
NAME NODE:负责记录文件系统的元数据(文件系统的目录树,每个文件的块信息<块id、块位置>);
DATA NODE:负责管理文件块;
客户端程序Client:封装存、取文件的过程(这是一个复杂的过程,要与namenode、datanode做各种各样的交互);

HDFS中的文件存储形式:
每个文件会被分成若干个块(由客户端决定:参宿)来存储;
这些块都存储在DATANODE服务器的磁盘目录中;
每个块在整个HDFS文件系统中,都可以存储多个副本(由客户端:参数决定,可配置);

hadoop学习笔记 day01 hadoop环境搭建和基本设置
hadoop学习笔记 day01 hadoop环境搭建和基本设置
hadoop学习笔记 day01 hadoop环境搭建和基本设置

一.linux网络设置

1、创建一个虚拟机(母机),并安装好centos(minimal)系统
2、从母机克隆出另外3台虚拟机
3、启动这4台虚拟机,登录进去修改网卡名、ip地址配置、主机名、域名映射

改主机名: vi /etc/sysconfig/network
改网卡名:mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
改IP地址配置:vi /etc/sysconfig/network-scripts/ifcfg-eth1

hadoop学习笔记 day01 hadoop环境搭建和基本设置
onboot=yes
删掉:uuid hdwaddr
ip:
prefix =24 相当于 netmask=255.255.255.0
gateway=虚拟交换机的地址
dns1=虚拟交换机的地址

ip地址改完后,记得要重启网络服务: service network restart
并记得关掉防火墙:service iptables stop
chkconfig iptables off

hadoop学习笔记 day01 hadoop环境搭建和基本设置

改域名映射:
vi /etc/hosts

scp /etc/hosts cts02:/etc/
scp /etc/hosts cts03:/etc/
scp /etc/hosts cts04:/etc/

4、用crt去连接这几台虚拟服务器
可在windows中配置这几台虚拟机的域名映射 c:/windows/system32/drivers/etc/hosts

5、在母机上安装jdk
版本必须1.7以上,最好1.8
在crt的登录会话上按alt+p打开一个sftp传输文件的窗口,然后将jdk的压缩包拖进去就ok了。
解压jdk压缩包: tar -zxvf jdk-8u60-linux-x64.gz -C ./apps/
配置环境变量: JAVA_HOME PATH
vi /etc/profile
export JAVA_HOME=/root/apps/jdk1.8.0_60/
export PATH=$PATH:$JAVA_HOME/bin
然后 source /etc/profile

验证jdk安装成功: 直接敲命令: java -version 是否执行成功!

然后,记得将母机上的apps目录scp给所有其他机器
scp -r apps cts02:/root/
scp -r apps cts03:/root/
scp -r apps cts04:/root/

并将profile环境变量配置文件拷贝给其他所有机器:
scp /etc/profile cts02:/etc/
scp /etc/profile cts03:/etc/
scp /etc/profile cts04:/etc/

PS:
给各台机器都安装scp工具
给各台机器配置一个本地yum源
(挂载一个安装盘镜像到/mnt/cdrom,并将这个地址配置到/etc/yum.repos.d/dvd.repo文件中),
6.2 先找到ssh工具相关的软件包
yum list | grep ssh
安装:
yum clean all
yum install -y openssh.x86_64 openssh-clients.x86_64

二.安装Java环境并配置环境变量

三.安装hadoop

前提
准备4台linux机器
装好jdk
配好IP地址、主机名、域名映射、关闭防火墙
禁止一个服务(防火墙)开机自启: chkconfig iptables off
配好cts01 -->其他所有机器的免密登陆机制

a) 上传安装包到cts01
b) 解压
c) 修改配置文件
hadoop-env.sh
export JAVA_HOME=/root/app/jdk1.8.0_60/

hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.rpc-address</name>
<value>cts01:9000</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>cts02:50090</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hdpdata/name/</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hdpdata/fileblock/</value>
</property>

</configuration>

d) 复制安装包到别的机器
scp -r hadoop-2.8.1/ cts02:/root/app/
scp -r hadoop-2.8.1/ cts03:/root/app/
scp -r hadoop-2.8.1/ cts04:/root/app/

e) 把namenode的元数据目录初始化(在cts01)
bin/hadoop namenode -format
此命令的本质,是生成namenode所需要的元数据存储目录及各类初始化文件
f)配置环境变量 /etc/profile
hadoop学习笔记 day01 hadoop环境搭建和基本设置

四.启动hadoop

启动hdfs服务端: start-dfs.sh
停止hdfs服务端: stop-dfs.sh
内置的脚本需要我们自己将datanode机器列入一个etc/hadoop/slaves文件
[[email protected] hadoop]# vi slaves
cts01
cts02
cts03
cts04
记得:事先要配置好免密登陆 cts01  cts01 02 03 04

启动HDFS客户端:
hadoop学习笔记 day01 hadoop环境搭建和基本设置

vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://pc-01:9000</value>
</property>

命令行客户端常用命令:

hdfs dfs -ls / ## 查看hdfs中的一个文件夹中的信息
hdfs dfs -mkdir -p /abc/bcd ## 在hdfs文件系统中创建文件夹
hdfs dfs -put ./xx.dat / ## 从客户端的本地文件系统中传输一个文件到hdfs文件系统
hdfs dfs -get /hdfs/path ./ ##从hdfs文件系统中下载一个文件到客户端本地磁盘
hdfs dfs -rm /hdfs/file ## 删除
hdfs dfs -rm -r /adc/ ## 删除目录
hdfs dfs -cp /hdfs/file1 /hdfspath/file2 ## 在hdfs中复制
hdfs dfs -mv /hdfspath1/file1 /hdfspath2/file2 ## 在hdfs中移动
hdfs dfs -cat /bbb/xxoo.sh ## 显示文件的内容
hdfs dfs -tail /bbb/xxoo.sh ## 显示文件的尾部内容
hdfs dfs -appendToFile ./a.txt /bbb/xxoo.sh ##追加一个本地文件的内容到HDFS中的一个文件