您的位置:首页 > 运维架构

hadoop伪发布安装配置

2015-12-31 10:08 274 查看
hadoop伪发布安装配置

1.在目录/usr/softinstall/hadoop/etc/hadoop,配置文件修改。

1.1 第一个:hadoop-env.sh

#在27行修改

export JAVA_HOME=/usr/softinstall/jdk

1.2 第二个:core-site.xml

<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/softinstall/hadoop/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>

1.3 第三个:hdfs-site.xml

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

1.4 第四个:mapred-site.xml.template

需要重命名: mv mapred-site.xml.template mapred-site.xml

<!-- 通知框架MR使用YARN -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

1.5 第五个:yarn-site.xml

<configuration>

<!-- reducer取数据的方式是mapreduce_shuffle -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

2.1 格式化HDFS(namenode)第一次使用时要格式化

hadoop/bin/ hdfs namenode -format

2.2 启动hadoop

2.2.1 先启动HDFS

hadoop/sbin/start-dfs.sh
(sbin/hadoop-daemon.sh start namenode)

2.2.2 再启动YARN

hadoop/sbin/start-yarn.sh

3.1 验证是否启动成功

使用jps命令验证

[root@hadoop0 sbin]# jps
4302 Jps
4182 ResourceManager
3780 NameNode
4038 SecondaryNameNode
4268 NodeManager
3864 DataNode

3.2 查看页面

http://hadoop0:50070(HDFS管理界面)



在这个文件中添加linux主机名和IP的映射关系

C:\Windows\System32\drivers\etc\hosts

192.168.60.128 hadoop0

http://hadoop0:8088/(MR管理界面)

查看地址:http://www.aboutyun.com/thread-8293-1-1.html

java操作hdfs

1.1 新建一个maven项目
1.2 在http://mvnrepository.com/tags/maven 中找到三个jar包配置。把其加到pom.xml文件中。

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.1</version>
</dependency>

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.1</version>
</dependency>

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.1</version>
</dependency>

1.3 新建一个java类

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class Hdfs {

public static void main(String[] args) throws Exception {

//FileSystem  fs= getFileSystem();
// readFile();
//  mkdir();
//  rmdir();
list() ;
}
private static FileSystem getFileSystem() throws URISyntaxException,IOException {
Configuration conf = new Configuration();
URI uri = new URI("hdfs://hadoop0:9000");
final FileSystem fileSystem = FileSystem.get(uri , conf);
return fileSystem;
}
private static void readFile() throws Exception {
FileSystem fileSystem = getFileSystem();
FSDataInputStream openStream = fileSystem.open(new Path("hdfs://hadoop0:9000/aa/aa4"));
IOUtils.copyBytes(openStream, System.out, 1024, false);
IOUtils.closeStream(openStream);
}
/**
* 创建目录,调用fileSystem的mkdirs(path)
* @throws Exception
*/
private static void mkdir() throws Exception {
FileSystem fileSystem = getFileSystem();
fileSystem.mkdirs(new Path("hdfs://hadoop0:9000/bbb"));
}
/**
* 删除目录,调用fileSystem的deleteOnExit(path)
* @throws Exception
*/
private static void rmdir() throws Exception {
FileSystem fileSystem = getFileSystem();
fileSystem.delete(new Path("hdfs://hadoop0:9000/bbb"));
}
/**
* 遍历目录,使用FileSystem的listStatus(path)
* 如果要查看file状态,使用FileStatus对象
* @throws Exception
*/
private static void list() throws Exception{
FileSystem fileSystem = getFileSystem();
FileStatus[] listStatus = fileSystem.listStatus(new Path("hdfs://hadoop0:9000/"));
for (FileStatus fileStatus : listStatus) {
String isDir = fileStatus.isDir()?"目录":"文件";
String name = fileStatus.getPath().toString();
System.out.println(isDir+"  "+name);
}
}

}


一般情况下,对hdfs的操作是用shell命令,相对来说很少用到写Java代码的操作。

集群间复制

hadoop distcp hdfs://source hdfs://destination

hdfs笔记

1.hadoop是什么?
hadoop是适合大数据存储和大数据计算的平台。
apache hadoop2.6.0
在hadoop2包括3个核心组成:HDFS2、Yarn、MapReduce。
在hadoop1中,包括2个核心组成:HDFS、MapReduce。
2.HDFS负责分布式存储。
3.MapReduce是负责批处理的。
4.伪分布安装
----------------------------------------------------
1.分布式文件系统是位于操作系统之上的一层文件管理系统。
2.HDFS中的数据存储,在用户看来,非常类似于linux的文件管理——树状的目录结。
3.hdfs中的文件内容是可以追加的.
4.启动HDFS进程的用户是超级用户,不受任何权限限制。
5.NameNode包含文件与数据的映射

为什么文件夹没有副本?
是否可以插入内容到HDFS文件的前面?

7.core-site.xml 中的配置是覆盖core-site.xml.default 中的配置属性的。
8.-rw-r--r-- 3 ipms ipms 10735016 2015-07-29 14:25 /rawdata/xdr/lte/lte_x2/20150729/14/20/210_2_X2AP_201507291415_00.CSV
其中3(-rw-r--r-- 3) 表示副本数。 文件夹是没有这个标示的,其用“-” 表示。

HDFS dfsadmin命令

1. bin/hdfs dfsadmin -setQuota 10 lisi
-clrQuota 清空
bin/hdfs dfsadmin -setSpaceQuota 4k /lisi/
-clrSpaceQuota 清空
查看bin/hdfs dfs -count -q -h /lisi
2 namenode 与datanode 的namespaceID
datanode与namenode的namespaceID应该是相同的,只有相同才能相互通信,每次格式化namenode会生产一个新的namespaceID,如果datanode没有同步,导致datanode与namenode的namespaceID不相同,则两者之间是不能相互通信情况。
在tmp/dfs/name/current/version 下可以查看到namespaceID等相关信息。
3.文件按块存储在datanode中,在Hadoop2中block块默认是128M,如果文件大小大于128M,则按128M分成多块存储在datanode中,余下不足128M的则按实际的大小存储。每一个block块在namenode中都占用一个内存单元,如果文件数据小,文件数量多,会增加对namenode的内存压力,所以不适合存储小文件,而适合存储大文件。
4.hdfs是一个分布式文件系统,其中namenode是整个分布式文件系统的管理节点,它维护整个文件系统的文件目录树,文件、目录的元数据信息和对应的数据块列表,并且接受用户的请求。
5.客户端client向namenode发送请求,namenode返回block块所在datanode地址给client,client通过地址找到相应的datanode的block块,与之相互通信。
6.1 fsimage 文件中存储一段时间里的元数据信息。
6.2 edits 文件中存储操作日志内容。
7.1 hdfs dfsadmin -safemode
7.2 hdfs dfsadmin -report
8.1 数据存储:staging
HDFS client上传数据到HDFS时,会首先在本地缓存数据,当数据达到一个block大小时,请求NameNode分配一个block。NameNode会把block所在的DataNode的地址告诉HDFS client。HDFS client会直接和DataNode通信,把数据写到DataNode节点一个block文件中。

HDFS联盟

多个namenode集群共享同一个datanode集群。不同namenode

/content/4721178.html(好博客地址)

http://blog.fens.me/category/hadoop-action/page/2/(hadoop
大数据算法 好博客)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: