Hadoop环境的配置搭建和基本概念

1、Hadoop配置

1、配置hadoop-env.sh
添加JAVA_HOME信息,如:
export JAVA_HOME=/usr/java/jdk1.6

2、配置core-site.xml
参数:fs.default.name
作用:指定NameNode的IP地址和端口(端口可以修改)
注意:如果是完全分布式节点,localhost应改为该主机的IP和端口

如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

3、配置hdfs-site.xml
参数:dfs.data.dir(指定数据节点在集群中存放数据的目录)
注意:存放目录由自己决定,目录是预先建好的。
参数:dfs.replication(指数据块在集群中的副本数,即备份数)

如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.data.dir</name>
<value>/usr/hadoop-1.1.2/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

4、配置mapred-site.xml
参数:mapred.job.tracker(指定作业跟踪器的IP和端口,默认9001,可以修改)
注意:如果是完全分布式节点,localhost应改为该主机的IP和端口

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

2、生成ssh密钥对

1、用户:root
1)cd /root
2)ssh-keygen -t rsa
注意:rsa或dsa是一种解密算法,公钥加密,私钥解密,如:给当前服务器的root用户创建一对秘钥,一个是公钥,一个是私钥,两个秘钥是不对称的,公钥是对外公开的,可以让其它服务器得到该公钥,其它服务器可以使用该公钥对数据或要传输的内容进行加密,然后传递给该服务器,该服务器再用私钥进行解密。
3)在root目录下,cd .ssh(隐藏目录),文件如下:
密钥对:id_rsa(私钥),id_rsa.pub(公钥)
4)执行命令:
cp id_rsa.pub authorized_keys
5)authorized_keys
存放了对外公开的公钥,其它服务器就会根据authorized_keys
记录的公钥来免密码连接该服务器
 

3、完全分布式安装和配置

1、配置hosts文件
对集群中的主机名进行解析(把对方的主机名解析为IP地址)
所有的节点都修改/etc/hosts,
使彼此之间都能把主机名解析为ip

2、建立hadoop运行账号
建议不使用root用户,每个节点单独建一个hadoop的运行账号

3、配置ssh免密码登录
每个节点都使用hadoop的运行账号(主目录下)生成公钥和私钥
把各个节点的authorized_keys的内容互相拷贝加入到对方的此文件中
然后就可以免密码彼此ssh连入

4、下载并解压hadoop安装包

5、配置namenode,修改site文件

6、配置hadoop-env.sh
指定JAVA_HOME目录

7、配置masters和slaves文件
修改masters文件(主节点):
如:192.168.1.10  h1(主机名)
在masters文件中添加内容:h1
修改slaves文件(从节点):
如:192.168.1.12  h2(主机名)
在slaves文件中添加内容:h2
注意:一个主机名在一行

8、向各节点赋值hadoop
scp命令(是ssh套件的一个运用程序,可以跨节点拷贝文件)
注意:如果之前没有配置ssh免密码登录,使用scp时需要账号和密码
如(主机名:h2、h3,用户:grid):
scp -r ./hadoop-1.1.2 h2:/home/grid
scp -r ./hadoop-1.1.2 h3:/home/grid
给每一个节点拷贝一份即可
注意:先在一台机上配置好hadoop后,然后再拷贝到各个节点。

9、格式化namenode
伪分布和完全分布的做法一样
cd hadoop-1.1.2/bin/
hadoop namenode -fromat

格式化名称节点:
在名称节点上建立一系列的结构,用来存放整个hdfs元数据。

10、启动hadoop
start-all.sh
stop-all.sh

11、用jps检验各后台进程是否成功启动
运行命令:
/usr/java/jdk1.6/bin/jps


4、hdfs基础原理

Namenode

(1)管理文件系统的命名空间

(2)记录每个文件数据块在各个Datanode上的位置和副本信息

(3)协调客户端对文件的访问

(4)记录命名空间内的改动或空间本身属性的改动

(5)Namenode使用事务日志记录HDFS元数据的变化。
使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等。

Datanode

(1)负责所在物理节点的存储管理

(2)一次写,多次读取(不修改)

(3)文件由数据块组成,典型的块大小是64MB

(5)数据块尽量散布到各个节点

(6)Datanode启动时,遍历本地文件系统,产生一份hdfs
数据块和本地文件的对应关系列表(blockreport)汇报给namenode。


5、hdfs文件操作命令

hdfs文件操作--命令行

(1)显示文件
当前用户目录:hadoop fs -ls
根目录:hadoop fs -ls /
hdfs没有当前目录的概念

(2)上传文件
hadoop fs -put src dst
src:linux中的文件或目录
dst:hdfs中的目录

(3)下载文件
hadoop fs -get src dst
src:hdfs中的将文件或目录
dst:linux中的目录

(4)删除文件
递归删除:hadoop fs -rmr file

(5)查看文件内容
hadoop fs -cat file
hadoop fs -text file

(6)查看hdfs基本统计信息
hadoop dfsadmin -report

(7)进入和退出安全模式
hdfs在启动时进入安全模式,每个Datanode节点会检查数据块的状况,并生成数据块映像的报告发给Namenode,Namenode根据报告检测数据块是否处于安全状态,通过判断如果数据块副本数达到阈值,则为安全状态,只有当安全状态的数据快达到一定比例之后,才会退出安全模式。进入安全模式可以检查数据块的安全状态。
进入:hadoop dfsadmin -safemode enter
退出:hadoop dfsadmin -safemode leave

(8)数据负载均衡
节点出现故障,或新增加节点时,数据块分布可能不均匀,负载均衡可以重新平衡各个Datanode上数据块的分布。
start-balancer.sh
 

Hadoop相关子项目

Pig:

1、Hadoop客户端

2、使用类似于SQL的面向数据流的语言PigLatin

3、Pig Latin可以完成排序,过滤,求和,聚组,关联等操作,可以支持自定义函数

4、Pig自动把Pig Latin映射为Map-Reduce作业上传到集群运行,减少用户编写java程序的苦恼

5、三种运行方式:Grunt shell,脚本方式,嵌入式

Hbase:

1、Google Bigtable的开源实现

2、列式数据库

3、可集群化

4、可以使用shell、web、api等多种方式访问

5、适合高读写(insert)的场景

6、HQL查询语言

7、NoSQL的典型代表产品

Hive:

1、数据仓库工具。可以把hadoop下的原始结构化数据变成Hive中的表

2、支持一种与SQL几乎完全相同的语言HiveQL。除了不支持更新、索 引和事务,几乎SQL的其它特征都能支持

3、可以看成是从SQL到Map-Reduce的映射器

4、提供shell、JDBC/ODBC、Thrift、Web等接口

Zookeeper:

1、Google Chubby的开源实现

2、用于协调分布式系统上的各种服务。例如确认消息是否准确到达,防止单点失效,处理负载均衡等

3、应用场景:Hbase,实现Namenode自动切换

4、工作原理:领导者,跟随者以及选举过程

Sqoop:

1、用于在Hadoop和关系型数据库之间交换数据

2、通过JDBC接口连入关系型数据库

Avro:

1、数据序列化工具,由Hadoop的创始人Doug Cutting主持开发

2、用于支持大批量数据交换的应用。支持二进制序列化方式,可以便捷,快速地处理大量数据

3、动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据

4、Thrift接口

Chukwa:

1、架构在Hadoop之上的数据采集与分析框架

2、主要进行日志采集和分析

3、通过安装在收集节点的“代理”采集最原始的日志数据

4、代理将数据发给收集器

5、收集器定时将数据写入Hadoop集群

6、指定定时启动的Map-Reduce作业队数据进行加工处理和分析

7、Hadoop基础管理中心(HICC)最终展示数据

Cassandra:

1、NoSQL,分布式的Key-Value型数据库,有Facebook贡献

2、与Hbase类似,也是借鉴Google Bigtable的思想体系

3,、只有顺序写,没有随机写的设计,满足高负荷情形的性能需求
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值