hadoop的安装配置与测试
来源:互联网 发布:php 过滤非utf8字符 编辑:程序博客网 时间:2024/04/24 16:33
Hadoop的安装(以下操作均在root用户下)
1.配置客户机的静态IP
要求:IP网段 | 网关 | 子网掩码
1查看网关
vmware==>编辑菜单==>虚拟网络编辑器==>打开窗口==>选中vmnet8虚拟网卡==>nat设置==>查看网关
2查看可用的IP网段
vmware==>编辑菜单==>虚拟网络编辑器==>打开窗口==>选中vmnet8虚拟网卡==>DHCP设置==>查看网段
3挑选可用的IP
4配置主机的静态IP
2.安装jdk,配置环境变量
$>vim /etc/hosts
JAVA_HOME
PATH
3.解压hadoop-2.4.1.tar.gz
tar hadoop-2.4.1.tar.gz
4.配置环境变量
$>vim /etc/hosts
HADOOP_HOME
PATH
5.配置hadoop
1.standalone | local //独立模式
a. 没有守护进程,所有的程序运行在同一JVM中,利于test和debug
b.查看文件系统
$> hadoop fs –ls / <=> $> hadoop fs –ls hdfs://localhost/ //查看的就是本地文件系统
2.pseudo distributedmode //伪分布模式
[配置文件${HADOOP_HOME}/etc/Hadoop/*-site.xml]
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> //设置副本数量
</property>
</configuration>
mared-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
[配置SSH]
1.安装ssh软件
$>sudo apt-get install ssh //安装服务端(sshd)和客户端(ssh)以及相关软件
2.生成密钥对
$>ssh-keygen -t rsa -P ‘ ’ -f ~/.ssh/id_rsa
3.追加公钥到对方的认证库中
$>cat id_rsa.put >> ~/.ssh/authorized_keys
4.测试ssh到localhost
$>ssh localhost
[格式化hdfs文件系统]
hdfs namenode –format //hadoop/bin/hdfs
启动和停止hdfs和yarn守护进程 //hadoop/sbin
启动
$>start-dfs.sh
$>start-yarn.sh
停止
$>stop-dfs.sh
$>stop-yarn.sh
配置目录的指定方式
1.默认方式
${HADOOP_HOME}/etc/hadoop/*.xml
2.通过启动参数指定配置目录
$>start-dfs.sh --config${HADOOP_HOME}/etc/hadoop command //hadoop/sbin
3.通过设置环境变量
HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
目录操作
$>hadoop fs –mkdir –p /user/${USER} //创建目录,-p 多级目录
$> hadoop fs –ls/ //显示根目录
$> hadoop fs –ls /user… //显示指定的目录
$> hadoop fs –ls -R/ //递归显示目录
$> hadoop fs –lsr/ //递归显示目录
查看namenode和datanode在本地
$>cd${HADOOP_HOME}/tmp(该目录是自己配置的hadoop工作目录)/dfs/name/…
$>cd ${HADOOP_HOME}/tmp(该目录是自己配置的hadoop工作目录)/dfs/data/…
查看log文件
1.$>cd ${HADOOP_HOME}/log/…
2.通过WebUI查看日志或者集群情况<仅本机才可访问>
http://localhost:50070/ //查看的是namenode节点的情况
http://localhost:8088/ //查看的是resourcemananger的情况,hadoop集群的信息
http://localhost:19888/ //看的是历史服务器的情况
$>netstat –lnpt //查看网络端口的占用情况
3.搭建完全分布式集群
1.安装Java
2.创建user
3.安装hadoop
4.配置SSH
5.格式化
6.启动进程
satrt-dfs.sh | start-yarn.sh
7.创建目录
8.配置hadoop
1.克隆多台主机
2.[配置文件${HADOOP_HOME}/etc/Hadoop/*-site.xml]
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-server-00【主机名】:9000</value>
</property>
<property>(可选)
<name>hadoop.tmp.dir</name>
<value>/usr/local/apps/hadoop-2.4.1/tmp/</value> //配置hadoop的工作目录(可以自己设置)
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> //设置副本数量
</property>
</configuration>
mared-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value> hadoop-server-00【主机名】</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
slaves
hadoop-server-00
hadoop-server-01
hadoop-server-02
3.配置主机名然后进行远程拷贝
1.$>vim /etc/hosts
添加如下配置:
主机名 主机IP
(自己设置) (与该主机IP一致)
hadoop-server-00 192.168.196.10
hadoop-server-01 192.168.196.11
hadoop-server-02 192.168.196.12
2.远程复制/etc/hosts/到远程主机
$>scp hosts root@hadoop-server-01(02):/etc/
4.通过scp进行远程复制
$>scp –r ${HADOOP_HOME}/etc/hadoop root@hadoop-server-01(02):${HADOOP_HOME}/etc/
5.编写脚本,实现文件或者文件夹在所有节点的远程复制。
6.修改默认的hadoop临时目录
core-site.xml
添加
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/apps/hadoop-2.4.1/tmp/</value> //路径可自由设置
</property>
7.修改blocksize大小,默认是128M
dfs-site.xml
添加
<property>
<name>dfs.blocksize</name>
<value>64m</value> //大小可自由设置
</property>
测试是否设置正确:
1.$>hadoop fs –put 文件(>64m)
2.通过WebUI查看块大小
6.配置CentOS的文本启动模式
1.$>vim /etc/inittab
id:5:initdefault: => id:3:initdefault:
2.重启
$>reboot
3.在文本模式下,启动图形界面
$>startx
4.在图形界面下,进入文本模式
Ctrl+Alt+Fn(n=1~12)
7.查看所有端口
$>netstat –ano | more
常用端口
1.NameNode
RPC //8020
WebUI //50070
2.DataNode
RPC //8032
WebUI //50075
3.SecondaryNameNode
WebUI //50090
4.HistoryServer
WebUI //19888
5.ResourceManager
WebUI //8088
6.NodeManager
WebUI //8042
8.安全模式
1.namenode启动时,合并image和edit成新的image,并产生新的edit log
2.整个过程处于safe模式下,客户端只能读取
3.namenode安全模式操作
$>hdfs dfsadmin –safemode get //查看
$>hdfs dfsadmin –safemode enter //进入
$>hdfs dfsadmin –safemode leave //离开
4.手动保存名字空间
$>hdfs dfsadmin –saveNamespace
5.手动保存镜像文件
$>hdfs dfsadmin –fetchImage
6.保存元数据,保存在${HADOOP_HOME}/logs/
$>hdfs dfsadmin –metasave xxx.metadata
7.start-balancer.sh
启动均衡器,让集群在数据存储上更加平均,提高整个集群的效率
9.hadoop文件操作系统,目录默认不能创建快照
1.开启快照功能,hdfsdfsadmin
$>hdfs dfsadmin –allowSnapshot ${HADOOP_HOME}/tmp/data
2.快照,snapshot,针对目录
$>hadoop fs –createSnapshot ${HADOOP_HOME}/tmp/data snap-1
10.回收站
1.默认时0秒,意味着禁用回收站
2.设置文件在回收站的驻留时间
core-site.xml
fs.trash.interval=1 //分钟数计算
3.通过shell命令删除的文件,会进入Trash
4.每个用户都有自己的回收站(目录)
$>hadoop fs –ls /
5.编程方式删除的文件不进入回收站,立即删除,若希望通过编程方式删除的文件叶经过回收站,可以调用:
moveToTrash()方法,其返回值(false:说明禁用了回收站或者已经在回收站中)
11.配额
1.目录配额
$>hdfs dfsadmin –setQuota N /dir //N>0,目录配额,1:表示空目录,不能放置任何元素
2.空间配额
$>hdfs dfsadmin –setSpaceQuota N /dir
3.查看fsimage镜像文件
$>hdfs oiv –i xxxImage –o xxx.xml –p XML
4.查看edit_xxx编辑日志文件
$>hdfs oev –i edit_xxx –o xxx.xml –p XML
5.hadoop fs命令==hdfs dfs命令
12.执行
1.打开MyEclipse,创建项目
2.导入hadoop所有jar包
3.编写代码
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.URL;
importorg.apache.hadoop.fs.FsUrlStreamHandlerFactory;
publicclass Test {
static{
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
publicstatic void main(String[] args)throws Exception {
String urlStr="hdfs://hadoop-server-00:9000/zdx01.txt";
URL url=new URL(urlStr);
InputStream is=url.openStream();
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte[] buf=newbyte[1024];
int len=0;
while((len=is.read(buf))!=-1){
baos.write(buf,0,len);
}
byte[] data=baos.toByteArray();
System.out.println(new String(data));
}
}
4.添加log4j.properties
[src/log4j.properties]
//寻找位置:${HADOOP_HOME}/etc/hadoop/log4j.properties
13.HA
1.high availability,高可用性。
持续服务的能力
多台主机之间进行集群配置
2.failover,容灾
3.secondarynamenode(解决的可靠性问题)
4.single point of failure(SPOF),单点故障
5.NFS(Network file System),共享存储设备EMC,QJM
6.HA架构
1.两台主机,一台active(复制客户端所有操作),另一台standby(维护足够多的状态,随时提供融在服务)
2.Journal时单独的进程,用于active和standby之间的同步信息
3.active的namespace修改动作写入到JNs,standby从JNs读取edit,需要持续观察log的变化,一旦log发生变化,standby就会同步到自己的namespace。
4.datanode同时向两台namenode发送块列表信息以及心跳信息
5.同一时刻只能有一个active的namenode,
14.部署HA
[hdfs-site.xml]
1.配置名称服务:dfs.nameservices(名称服务的逻辑名)
<property>
<name> dfs.nameservices </name>
<value>mycluster</value>
</property>
2.配置nameservice中每个namenode
dfs.ha.namenodes.[nameserviceID]
<property>
<name> dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
注意:目前最新版本的hadoop最多只能支持2个namenode。
3.配置每个namenode的rpc地址
<property>
<name> dfs. namenode.rpc-address.mycluster.nn1</name>
<value>hadoop-server-00:9000</value>
</property>
<property>
<name> dfs.namenode.rpc-address.mycluster .nn1 </name>
<value> hadoop-server-04:9000</value>
</property>
4.配置每个namenode的WEBUI地址
<property>
<name> dfs.namenode.http-address.mycluster .nn1</name>
<value>hadoop-server-00:50070</value>
</property>
<property>
<name> dfs. namenode. http-address.mycluster .nn1 </name>
<value> hadoop-server-04:50070</value>
</property>
5.配置每个namenode的共享edit log目录
<property>
<name> dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop-server-00:8485;hadoop-server-04:8485/mycluster</value>
</property>
6.配置客户端容灾代理供应商类
<property>
<name> dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
7.(可选)配置HA防护方法名集合
QJM防止脑裂的发生,不存在两个activenode。
可以配置sshfence或者shell脚本
8.配置hdfs的文件系统
[core-site.xml]
<property>
<name> dfs.defaultFS</name>
<value>hdfs://mycluster/</value>
</property>
9.配置JN的本地存放数据(editlog)的目录
<property>
<name> dfs.journalnode.edits.dir</name>
<value>/home/zdx/hadoop/journal</value>
</property>
10.部署过程
1.在JN节点上启动jn进程
$>hadoop-daemon.sh startjournalnode
2.启动完成JN之后,需要在disk上完成两个namenode的元数据同步工作
a.如果正在构建的hdfs集群,需要在一台namenode之上进行format工作
b.若已经格式化文件系统或者non-ha集群之上启用ha功能,需要复制现有的namenode的目录(~/hadoop/dfs/name)到另一台namenode的相同目录之 下。然后在未格式化的namenode上执行命令:hdfsnamenode –bootstrapStandby,该命令保证了jn有足够多的edit来启动两个namenode
c.如果正在将non-ha的namenode转换成ha,执行命令hdfsnamenode –initializeShareEdits,该命令会从本地的namenode编辑日志目录数据初始化到 jns中,
d.启动两个namenode
e.通过WBUI查看每个namenode的状态
http://hadoop-server-00:50070
http://hadoop-server-04:50070
15.distcp实现hadoop集群中的文件复制
同一集群
$>hadoop distcp [源目录] [目标目录]
不同集群
$>hadoop distcp hdfs://主机名:9000/源目录 hdfs://主机名:9000/目标目录
16.归档
1.在java中:jar
2.在hadoop中:har
$>archive -archiveName NAME.har -p <src>* <dest>
3.查看归档之后的文件目录
$>hadoop fs –lsr har:/// <dest>/NAME.har
17.压缩- hadoop的安装配置与测试
- Hadoop的安装与测试
- Hadoop安装、配置、测试
- Hadoop的安装与配置
- Hadoop的安装与配置
- hadoop的安装与配置
- Hadoop 的安装与配置
- hadoop的安装与配置
- Hadoop的安装与配置
- [Hadoop]Hadoop的安装与配置
- Hadoop(一)--安装、配置与简单测试
- hadoop安装与配置
- Hadoop安装与配置
- hadoop安装与配置
- hadoop安装与配置
- hadoop安装与配置
- Hadoop安装与配置
- hadoop 安装与配置
- POJ3009 Curling 2.0 (DFS)
- leetcode#496. Next Greater Element I
- UML系列图--用例图
- python学习(5)循环
- TensorFlow中CNN的两种padding方式“SAME”和“VALID”
- hadoop的安装配置与测试
- 唯一索引、主键、Unique约束
- Objective-C 数据类总结
- jvm内存结构
- 实时流计算Spark Streaming原理介绍
- BZOJ 2462: [BeiJing2011]矩阵模板 二维哈希
- MFC操作--数据输出、注册表、文件统计和获取上级目录
- 踩坑之页端唤醒nativeAPP
- 缓存第三篇:redis入门之下载安装和命令行使用