当前位置:首页 » 操作系统 » hadoopforlinux

hadoopforlinux

发布时间: 2022-07-30 01:58:07

⑴ 怎么搭建两个hadoop集群的测试环境

环境配置:
虚拟机:
vmware workstation 12
系统:
ubuntu 16.04 LTS(推荐使用原版,不要用kylin)
节点: 192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2
jdk-8u101-linux-x64.gz (java)hadoop-2.7.3.tar.gz (Hadoop 包)
安装步骤:
1、安装虚拟机系统,并进行准备工作(可安装一个然后克隆)
2.修改各个虚拟机的hostname和host
3.创建用户组和用户
4、配置虚拟机网络,使虚拟机系统之间以及和host主机之间可以通过相互ping通。
5.安装jdk和配置环境变量,检查是否配置成功
6、配置ssh,实现节点间的无密码登录 ssh node1/2指令验证时候成功
7、master配置hadoop,并将hadoop文件传输到node节点
8、配置环境变量,并启动hadoop,检查是否安装成功,执行wordcount检查是否成功。

1.安装虚拟机

在VM上安装下载好的Ubuntu的系统,具体过程自行网络。可以安装完一个以后克隆,但是本人安装过程中遇到很多问题,经常需要删除虚拟机,重新安装,而被克隆的虚拟机不能删除,所以本人就用了很长时候,一个一个安装。

一共3台虚拟机:分配情况和IP地址如下:

(注:查看ip地址的指令 ifconfig)

安装虚拟机时可以设置静态IP,因为过程中常常遇到网络连接问题,ifconfig找不到IPV4地址。当然,也可以不设,默认分配。

192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2

2.修改虚拟机的hostname和hosts文件

以master上机器为例,打开终端,执行如下的操作,把hostname修改成master,hosts修改成如下所示的样子:

#修改hostname的指令:sudo gedit /etc/hostname
#修改hosts指令:sudo gedit /etc/hosts
#将以下内容添加到hosts中192.168.159.132 master192.168.159.134 node1192.168.159.137 node2

如下图所示:


自此,hadoop集群搭建成功!

⑵ 我在linux上装单点hadoop,最后在./start-all.sh之后出现了一下代码,谁能解释一下,这是什么意思

start-all.sh这个命令不用了,现在使用start-dfs.sh 和 start-yarn.sh代替start-all.sh命令,可能是因为跟spark里的start-all.sh命令重名了,这是打印的第一行信息的意思;

后面提示的WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable是缺少一个java类库,不影响运行

要解决可以参考

网页链接里面有解决方法

localhost: namenode running as process 6357. Stop it first.

0.0.0.0: secondarynamenode running as process 6637.

Stop it first.starting yarn daemons

resourcemanager running as process 6777. Stop it first.
localhost: nodemanager running as process 6880. Stop it first.

这些都是因为你之前已经开启了这些服务,正在运行,你再开启就提示你先关闭

⑶ linux 下如何把源码打包成hadoop-core-1.1.2.jar

1.首先确认,你的linux上有没有安装ant
2.确认你的 各种环境是否配置正确(不会的话去看hadoop开发指南)
我把我的build.xml发给你
<?xml version="1.0"?>
<!--build.xml - a simple Ant buildfile -->
<project name="Simple Buildfile" default="compile" basedir=".">

<!--Set up the env prefix for environment variable -->
<property environment="env"/>

<!-- The directory cotaining source code -->
<property name="src.dir" value="src" />

<!-- Temporary build directories -->
<property name="build.dir" value="build"/>
<property name="build.classes" value="${build.dir}/classes"/>
<property name="build.lib" value="${build.dir}/lib"/>
<property name="jar.name" value="howtouse.jar"/>

<!-- Hadoop path -->
<property name="hadoop.path" value="${env.HADOOP_HOME}"/>

<!-- Target to create the build directories prior to the -->
<!-- compile target -->
<target name="prepare">
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.classes}"/>
<mkdir dir="${build.lib}"/>
</target>

<target name="clean" description="Removes all generated files.">
<delete dir="${build.dir}"/>
</target>

<target name="compile" depends="prepare" description="Compiles all source code.">
<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="false"
deprecation="false">
<classpath>
<pathelement location="${hadoop.path}/hadoop-core-0.20.203.0.jar"/>
<pathelement location="${hadoop.path}/hadoop-tools-0.20.203.0.jar"/>
<pathelement location="${hadoop.path}/hadoop-examples-0.20.203.0.jar"/>
<pathelement location="${hadoop.path}/lib/mockito-all-1.8.5.jar"/>
<pathelement location="${hadoop.path}/lib/junit-4.5.jar"/>
<pathelement location="${hadoop.path}/lib/commons-math-2.1.jar"/>
<pathelement location="${hadoop.path}/lib/commons-cli-1.2.jar"/>
<pathelement location="${hadoop.path}/contrib/datajoin/hadoop-datajoin-0.20.203.0.jar"/>
</classpath>
</javac>
</target>

<target name="jar" depends="compile" description="Generates jar in the dist directory.">
<!-- Exclude unit tests from the final Jar file -->
<jar jarfile="${jar.name}" basedir="${build.classes}" excludes="**/*Test.class"/>

</target>

<target name="all" depends="clean,jar" description="Cleans,compiles,then builds the Jar file."/>

</project>

确保以上条件后
1.将自己写的java文件放到 /home/hadoop/ant/build/src 使用XFTP
2.在HDFS中新建一个文件目录专门用来装资源文件 hadoop fs -mkdir /user/src
3.将simple.txt测试文件放到HDFS中 hadoop fs -put/user/src
4.将/home/hadoop/ant/build/src下的java文件编译打包成play.jar(名字由build.xml决定)
方法:编译之前必须保证与build.xml同级目录下 ant jar
5.hadoop单机模式运行的时候必须保证在lib目录下
hadoop jar play.jar hadoop/MaxTemperature /user/src/simple.txt output

⑷ 我在linux中执行hadoop fs -ls /后,显示如下信息,WARN util.Nativ

Hadoop自带的native包过旧,需要更新而已,替换个即可,进入hadoop目录的native目录替换一下,就可以了,在这里提供一个给你。记得先解压

⑸ Hadoop读写文件时内部工作机制是怎样的

客户端通过调用FileSystem对象(对应于HDFS文件系统,调用DistributedFileSystem对象)的open()方法来打开文件(也即图中的第一步),DistributedFileSystem通过RPC(Remote Procere Call)调用询问NameNode来得到此文件最开始几个block的文件位置(第二步)。对每一个block来说,namenode返回拥有此block备份的所有namenode的地址信息(按集群的拓扑网络中与客户端距离的远近排序,关于在Hadoop集群中如何进行网络拓扑请看下面介绍)。如果客户端本身就是一个datanode(如客户端是一个maprece任务)并且此datanode本身就有所需文件block的话,客户端便从本地读取文件。

以上步骤完成后,DistributedFileSystem会返回一个FSDataInputStream(支持文件seek),客户端可以从FSDataInputStream中读取数据。FSDataInputStream包装了一个DFSInputSteam类,用来处理namenode和datanode的I/O操作。

客户端然后执行read()方法(第三步),DFSInputStream(已经存储了欲读取文件的开始几个block的位置信息)连接到第一个datanode(也即最近的datanode)来获取数据。通过重复调用read()方法(第四、第五步),文件内的数据就被流式的送到了客户端。当读到该block的末尾时,DFSInputStream就会关闭指向该block的流,转而找到下一个block的位置信息然后重复调用read()方法继续对该block的流式读取。这些过程对于用户来说都是透明的,在用户看来这就是不间断的流式读取整个文件。

当真个文件读取完毕时,客户端调用FSDataInputSteam中的close()方法关闭文件输入流(第六步)。

如果在读某个block是DFSInputStream检测到错误,DFSInputSteam就会连接下一个datanode以获取此block的其他备份,同时他会记录下以前检测到的坏掉的datanode以免以后再无用的重复读取该datanode。DFSInputSteam也会检查从datanode读取来的数据的校验和,如果发现有数据损坏,它会把坏掉的block报告给namenode同时重新读取其他datanode上的其他block备份。

这种设计模式的一个好处是,文件读取是遍布这个集群的datanode的,namenode只是提供文件block的位置信息,这些信息所需的带宽是很少的,这样便有效的避免了单点瓶颈问题从而可以更大的扩充集群的规模。


Hadoop中的网络拓扑


在Hadoop集群中如何衡量两个节点的远近呢?要知道,在高速处理数据时,数据处理速率的唯一限制因素就是数据在不同节点间的传输速度:这是由带宽的可怕匮乏引起的。所以我们把带宽作为衡量两个节点距离大小的标准。

但是计算两个节点之间的带宽是比较复杂的,而且它需要在一个静态的集群下才能衡量,但Hadoop集群一般是随着数据处理的规模动态变化的(且两两节点直接相连的连接数是节点数的平方)。于是Hadoop使用了一个简单的方法来衡量距离,它把集群内的网络表示成一个树结构,两个节点之间的距离就是他们离共同祖先节点的距离之和。树一般按数据中心(datacenter),机架(rack),计算节点(datanode)的结构组织。计算节点上的本地运算速度最快,跨数据中心的计算速度最慢(现在跨数据中心的Hadoop集群用的还很少,一般都是在一个数据中心内做运算的)。

假如有个计算节点n1处在数据中心c1的机架r1上,它可以表示为/c1/r1/n1,下面是不同情况下两个节点的距离:

• distance(/d1/r1/n1, /d1/r1/n1) = 0 (processes on the same node)

• distance(/d1/r1/n1, /d1/r1/n2) = 2 (different nodes on the same rack)

• distance(/d1/r1/n1, /d1/r2/n3) = 4 (nodes on different racks in the same data center)

• distance(/d1/r1/n1, /d2/r3/n4) = 6 (nodes in different data centers)

如下图所示:


Hadoop

写文件


现在我们来看一下Hadoop中的写文件机制解析,通过写文件机制我们可以更好的了解一下Hadoop中的一致性模型。


Hadoop

上图为我们展示了一个创建一个新文件并向其中写数据的例子。

首先客户端通过DistributedFileSystem上的create()方法指明一个欲创建的文件的文件名(第一步),DistributedFileSystem再通过RPC调用向NameNode申请创建一个新文件(第二步,这时该文件还没有分配相应的block)。namenode检查是否有同名文件存在以及用户是否有相应的创建权限,如果检查通过,namenode会为该文件创建一个新的记录,否则的话文件创建失败,客户端得到一个IOException异常。DistributedFileSystem返回一个FSDataOutputStream以供客户端写入数据,与FSDataInputStream类似,FSDataOutputStream封装了一个DFSOutputStream用于处理namenode与datanode之间的通信。

当客户端开始写数据时(第三步),DFSOutputStream把写入的数据分成包(packet), 放入一个中间队列——数据队列(data queue)中去。DataStreamer从数据队列中取数据,同时向namenode申请一个新的block来存放它已经取得的数据。namenode选择一系列合适的datanode(个数由文件的replica数决定)构成一个管道线(pipeline),这里我们假设replica为3,所以管道线中就有三个datanode。DataSteamer把数据流式的写入到管道线中的第一个datanode中(第四步),第一个datanode再把接收到的数据转到第二个datanode中(第四步),以此类推。

DFSOutputStream同时也维护着另一个中间队列——确认队列(ack queue),确认队列中的包只有在得到管道线中所有的datanode的确认以后才会被移出确认队列(第五步)。

如果某个datanode在写数据的时候当掉了,下面这些对用户透明的步骤会被执行:

1)管道线关闭,所有确认队列上的数据会被挪到数据队列的首部重新发送,这样可以确保管道线中当掉的datanode下流的datanode不会因为当掉的datanode而丢失数据包。

2)在还在正常运行的datanode上的当前block上做一个标志,这样当当掉的datanode重新启动以后namenode就会知道该datanode上哪个block是刚才当机时残留下的局部损坏block,从而可以把它删掉。

3)已经当掉的datanode从管道线中被移除,未写完的block的其他数据继续被写入到其他两个还在正常运行的datanode中去,namenode知道这个block还处在under-replicated状态(也即备份数不足的状态)下,然后他会安排一个新的replica从而达到要求的备份数,后续的block写入方法同前面正常时候一样。

有可能管道线中的多个datanode当掉(虽然不太经常发生),但只要dfs.replication.min(默认为1)个replica被创建,我们就认为该创建成功了。剩余的replica会在以后异步创建以达到指定的replica数。

当客户端完成写数据后,它会调用close()方法(第六步)。这个操作会冲洗(flush)所有剩下的package到pipeline中,等待这些package确认成功,然后通知namenode写入文件成功(第七步)。这时候namenode就知道该文件由哪些block组成(因为DataStreamer向namenode请求分配新block,namenode当然会知道它分配过哪些blcok给给定文件),它会等待最少的replica数被创建,然后成功返回。


replica是如何分布的


Hadoop在创建新文件时是如何选择block的位置的呢,综合来说,要考虑以下因素:带宽(包括写带宽和读带宽)和数据安全性。如果我们把三个备份全部放在一个datanode上,虽然可以避免了写带宽的消耗,但几乎没有提供数据冗余带来的安全性,因为如果这个datanode当机,那么这个文件的所有数据就全部丢失了。另一个极端情况是,如果把三个冗余备份全部放在不同的机架,甚至数据中心里面,虽然这样数据会安全,但写数据会消耗很多的带宽。Hadoop 0.17.0给我们提供了一个默认replica分配策略(Hadoop 1.X以后允许replica策略是可插拔的,也就是你可以自己制定自己需要的replica分配策略)。replica的默认分配策略是把第一个备份放在与客户端相同的datanode上(如果客户端在集群外运行,就随机选取一个datanode来存放第一个replica),第二个replica放在与第一个replica不同机架的一个随机datanode上,第三个replica放在与第二个replica相同机架的随机datanode上。如果replica数大于三,则随后的replica在集群中随机存放,Hadoop会尽量避免过多的replica存放在同一个机架上。选取replica的放置位置后,管道线的网络拓扑结构如下所示:


Hadoop

总体来说,上述默认的replica分配策略给了我们很好的可用性(blocks放置在两个rack上,较为安全),写带宽优化(写数据只需要跨越一个rack),读带宽优化(你可以从两个机架中选择较近的一个读取)。


一致性模型


HDFS某些地方为了性能可能会不符合POSIX(是的,你没有看错,POSIX不仅仅只适用于linux/unix, Hadoop 使用了POSIX的设计来实现对文件系统文件流的读取 ),所以它看起来可能与你所期望的不同,要注意。

创建了一个文件以后,它是可以在命名空间(namespace)中可以看到的:

Path p = new Path("p");

fs.create(p);

assertThat(fs.exists(p), is(true));

但是任何向此文件中写入的数据并不能保证是可见的,即使你flush了已经写入的数据,此文件的长度可能仍然为零:

Path p = new Path("p");

OutputStream out = fs.create(p);

out.write("content".getBytes("UTF-8"));

out.flush();

assertThat(fs.getFileStatus(p).getLen(), is(0L));

这是因为,在Hadoop中,只有满一个block数据量的数据被写入文件后,此文件中的内容才是可见的(即这些数据会被写入到硬盘中去),所以当前正在写的block中的内容总是不可见的。

Hadoop提供了一种强制使buffer中的内容冲洗到datanode的方法,那就是FSDataOutputStream的sync()方法。调用了sync()方法后,Hadoop保证所有已经被写入的数据都被冲洗到了管道线中的datanode中,并且对所有读者都可见了:

Path p = new Path("p");

FSDataOutputStream out = fs.create(p);

out.write("content".getBytes("UTF-8"));

out.flush();

out.sync();

assertThat(fs.getFileStatus(p).getLen(), is(((long) "content".length())));

这个方法就像POSIX中的fsync系统调用(它冲洗给定文件描述符中的所有缓冲数据到磁盘中)。例如,使用java API写一个本地文件,我们可以保证在调用flush()和同步化后可以看到已写入的内容:

FileOutputStream out = new FileOutputStream(localFile);

out.write("content".getBytes("UTF-8"));

out.flush(); // flush to operating system

out.getFD().sync(); // sync to disk (getFD()返回与该流所对应的文件描述符)

assertThat(localFile.length(), is(((long) "content".length())));

在HDFS中关闭一个流隐式的调用了sync()方法:

Path p = new Path("p");

OutputStream out = fs.create(p);

out.write("content".getBytes("UTF-8"));

out.close();

assertThat(fs.getFileStatus(p).getLen(), is(((long) "content".length())));


由于Hadoop中的一致性模型限制,如果我们不调用sync()方法的话,我们很可能会丢失多大一个block的数据。这是难以接受的,所以我们应该使用sync()方法来确保数据已经写入磁盘。但频繁调用sync()方法也是不好的,因为会造成很多额外开销。我们可以再写入一定量数据后调用sync()方法一次,至于这个具体的数据量大小就要根据你的应用程序而定了,在不影响你的应用程序的性能的情况下,这个数据量应越大越好。

⑹ 如何使用linux,hadoop进行分布式计算

Hadoop 应用程序
Hadoop 的最常见用法之一是 Web 搜索。虽然它不是惟一的软件框架应用程序,但作为一个并行数据处理引擎,它的表现非常突出。Hadoop 最有趣的方面之一是 Map and Rece 流程,它受到 Google 开发的启发。这个流程称为创建索引,它将 Web 爬行器检索到的文本 Web 页面作为输入,并且将这些页面上的单词的频率报告作为结果。然后可以在整个 Web 搜索过程中使用这个结果从已定义的搜索参数中识别内容。
MapRece
最简单的 MapRece 应用程序至少包含 3 个部分:一个 Map 函数、一个 Rece 函数和一个 main 函数。main 函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop 提供了大量的接口和抽象类,从而为 Hadoop 应用程序开发人员提供许多工具,可用于调试和性能度量等。
MapRece 本身就是用于并行处理大数据集的软件框架。MapRece 的根源是函数性编程中的 map 和 rece 函数。它由两个可能包含有许多实例(许多 Map 和 Rece)的操作组成。Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Rece 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。
这里提供一个示例,帮助您理解它。假设输入域是 one small step for man, one giant leap for mankind。在这个域上运行 Map 函数将得出以下的键/值对列表:
(one, 1) (small, 1) (step, 1) (for, 1) (man, 1)
(one, 1) (giant, 1) (leap, 1) (for, 1) (mankind, 1)

如果对这个键/值对列表应用 Rece 函数,将得到以下一组键/值对:
(one, 2) (small, 1) (step, 1) (for, 2) (man, 1)
(giant, 1) (leap, 1) (mankind, 1)

结果是对输入域中的单词进行计数,这无疑对处理索引十分有用。但是,现在假设有两个输入域,第一个是 one small step for man,第二个是 one giant leap for mankind。您可以在每个域上执行 Map 函数和 Rece 函数,然后将这两个键/值对列表应用到另一个 Rece 函数,这时得到与前面一样的结果。换句话说,可以在输入域并行使用相同的操作,得到的结果是一样的,但速度更快。这便是 MapRece 的威力;它的并行功能可在任意数量的系统上使用。图 2 以区段和迭代的形式演示这种思想。
图 2. MapRece 流程的概念流
现在回到 Hadoop 上,它是如何实现这个功能的?一个代表客户机在单个主系统上启动的 MapRece 应用程序称为 JobTracker。类似于 NameNode,它是 Hadoop 集群中惟一负责控制 MapRece 应用程序的系统。在应用程序提交之后,将提供包含在 HDFS 中的输入和输出目录。JobTracker 使用文件块信息(物理量和位置)确定如何创建其他 TaskTracker 从属任务。MapRece 应用程序被复制到每个出现输入文件块的节点。将为特定节点上的每个文件块创建一个惟一的从属任务。每个 TaskTracker 将状态和完成信息报告给 JobTracker。图 3 显示一个示例集群中的工作分布。
图 3. 显示处理和存储的物理分布的 Hadoop 集群
Hadoop 的这个特点非常重要,因为它并没有将存储移动到某个位置以供处理,而是将处理移动到存储。这通过根据集群中的节点数调节处理,因此支持高效的数据处理。

⑺ 如何在Linux下安装配置Apache Mahout

Mahout安装详细全过程
1、jdk安装 2
2、SSH无密码验证配置 2
3、 Hadoop配置 3
4、Hadop使用 6
5、Maven安装 7
6、安装mahout 7
7、hadoop集群来执行聚类算法 8
8、其他 8
————————————————————
1、jdk安装
1.1、到官网下载相关的JDK
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

1.2、打开“终端”
输入:sh jdk-6u24-linux-i586.bin

1.3、设置JAVA_HOME环境系统变量
输入:
vi /etc/environment
在文件中添加:
export JAVA_HOME=/root/jdk1.6.0_24
export JRE_Home=/root/jdk1.6.0_24/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
同样,修改第二个文件。输入:
vi /etc/profile
在umask 022之前添加以下语句:
export JAVA_HOME=/root/jdk1.6.0_24
export JRE_Home=/root/jdk1.6.0_24/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

1.4、注销用户,检测JDK版本。
输入:
java -version

2、集群环境介绍
集群包含三个节点:1 个 namenode,2 个 datanode,节点之间局域网连接,可以相互 ping 通。节点 IP 地址分布如下:
Namenode: [email protected]
Datanode1: slave1 @192.168.1.20
Datanode2: [email protected]
三台节点上均是CentOS系统,Hadoop在/root/hadoop/目录下。
在/etc/hosts上添加主机名和相应的IP地址:
192.168.1.10 master
192.168.1.20 slave1
192.168.1.21 slave2
3、SSH无密码验证配置
2.1 Hadoop 需要使用SSH 协议,namenode 将使用SSH 协议启动 namenode和datanode 进程,伪分布式模式数据节点和名称节点均是本身,必须配置 SSH localhost无密码验证。
用root用户登录,在家目录下执行如下命令:ssh-keygen -t rsa
[root@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): & 按回车默认路径 &
Created directory '/root/.ssh'. &创建/root/.ssh目录&
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c6:7e:57:59:0a:2d:85:49:23:cc:c4:58:ff:db:5b:38 root@master
通过以上命令将在/root/.ssh/ 目录下生成id_rsa私钥和id_rsa.pub公钥。进入/root/.ssh目录在namenode节点下做如下配置:
[root@master .ssh]# cat id_rsa.pub > authorized_keys
[root@master .ssh]# scp authorized_keys 192.168.1.20:/root/.ssh/
[root@master .ssh]# scp authorized_keys 192.168.1.21:/root/.ssh/
配置完毕,可通过ssh 本机IP 测试是否需要密码登录。

2.2 和namenode无密码登录所有Datanode原理一样,把Datanode的公钥复制到
Namenode的.ssh目录下。
[root@slave1 .ssh]# scp authorized_keys1 192.168.1.10:/root /.ssh
[root@ slave2.ssh]# scp authorized_keys2 192.168.1.10:/root /.ssh
将刚传过来的authorized_keys1、2加入到authorized_keys
[root@ master.ssh]# cat authorized_keys1 > authorized_keys
[root@ master.ssh]# cat authorized_keys2 > authorized_keys
这样也能在Datanode上关闭和启动Hadoop服务。
4、 Hadoop配置
下载 hadoop-0.20.2.tar.gz, 进行解压。
tar zxvf hadoop-0.20.2.tar.gz
修改/etc/profile,加入如下:
# set hadoop path
export HADOOP_HOME=/root/hadoop
export PATH=$HADOOP_HOME/bin:$PATH

4.1、进入hadoop/conf, 配置Hadoop配置文件
4.1.1 配置hadoop-env.sh文件
添加 # set java environment
export JAVA_HOME=/root/jdk1.6.0_24
编辑后保存退出。

4.1.2 配置core-site.xml
# vi core-site.xml
<?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://192.168.1.10:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/hadooptmp</value>
</property>
</configuration>

4.1.3 配置hdfs-site.xml
# vi hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/root/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/root/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>

4.1.4 配置mapred-site.xml
# vi mapred-site.xml
<?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>192.168.1.10:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/mapred/local</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/tmp/hadoop/mapred/system</value>
</property>
</configuration>

4.1.5 配置masters
# vi masters
192.168.1.10
4.1.6 配置slaves
# vi slaves
192.168.1.20
192.168.1.21

4.2、 Hadoop启动
4.2.1 进入 /root/hadoop/bin目录下,格式化namenode
# ./hadoop namenode –format

4.2.2 启动hadoop所有进程
在/root/hadoop/bin 目录下,执行start-all.sh命令
启动完成后,可用jps命令查看hadoop进程是否启动完全。正常情况下应该有如下进程:
10910 NameNode
11431 Jps
11176 SecondaryNameNode
11053 DataNode
11254 JobTracker
11378 TaskTracker

我在搭建过程中,在此环节出现的问题最多,经常出现启动进程不完整的情况,要不是datanode无法正常启动,就是namenode或是TaskTracker启动异常。解决的方式如下:
1)在Linux下关闭防火墙:使用service iptables stop命令;
2)再次对namenode进行格式化:在/root/hadoop/bin 目录下执行hadoop namenode -format命令
3)对服务器进行重启
4)查看datanode或是namenode对应的日志文件,日志文件保存在/root/hadoop/logs目录下。
5)再次在/bin目录下用start-all.sh命令启动所有进程,通过以上的几个方法应该能解决进程启动不完全的问题了。

4.2.3 查看集群状态
在 bin目录下执行:hadoop dfsadmin -report
# hadoop dfsadmin –report

4.3 在WEB页面下查看Hadoop工作情况
打开IE浏览器输入部署Hadoop服务器的IP:
http://localhost:50070
http://localhost:50030。

5、Hadop使用
一个测试例子wordcount:
计算输入文本中词语数量的程序。WordCount在Hadoop主目录下的java程序包hadoop-0.20.2-examples.jar 中,执行步骤如下:
在/root/hadoop/bin/目录下进行如下操作:
./hadoop fs -mkdir input(新建目录名称,可任意命名)
mkdir /root/a/
vi /root/a/a.txt
写入hello world hello
# hadoop fs -FromLocal /root/a/ input
在/root/hadoop/bin下执行:
# ./hadoop jar hadoop-0.20.2-examples.jar wordcount input output (提交作业,此处需注意input与output是一组任务,下次再执行wordcount程序,还要新建目录intput1与output1不能跟input与output重名)

6、Maven安装
6.1下载Maven
解压tar vxzf apache-maven-3.0.2-bin.tar.gz
mv apache-maven-3.0.2 /root/maven

6.2 vi ~/.bashrc
添加如下两行
export M3_HOME=/root/maven
export PATH=${M3_HOME}/bin:${PATH}

6.3 先logout,之后再login
查看maven版本,看是否安装成功
mvn -version

7、安装mahout
安装方法见:
https://cwiki.apache.org/confluence/display/MAHOUT/BuildingMahout

8、hadoop集群来执行聚类算法
8.1数据准备
cd /root/hadoop
wget http://archive.ics.uci.e/ml/databases/synthetic_control/synthetic_control.data

8.2 ./hadoop fs -mkdir testdata
./hadoop fs -put synthetic_control.data testdata
./hadoop fs -lsr testdata

bin/hadoop jar /root/mahout/mahout-examples-0.4-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

8.3查看一下结果吧
bin/mahout vectormp --seqFile /user/root/output/data/part-r-00000
这个直接把结果显示在控制台上。

9、hadoop集群来执行推荐算法
分布式
bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.map.tasks=3 -Dmapred.rece.tasks=3 -Dmapred.input.dir=testdata/100wan.txt -Dmapred.output.dir=output2

伪分布式
bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar org.apache.mahout.cf.taste.hadoop.pseudo.RecommenderJob --recommenderClassName org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender -Dmapred.input.dir=testdata/10wan.dat -Dmapred.output.dir=output_w10wan
10、其他
离开安全模式:hadoop dfsadmin -safemode leave

⑻ linux 下 hadoop 2.6编译 找不到 dist和native是怎么回事

1,安装gcc,执行如下的几个yum命令即可

Java代码

yum -y install gcc

yum -y install gcc-c++

yum install make

yum install autoconf automake libtool cmake ncurses-devel openssl-devel gcc*

2,安装JDK,并设置环境变量,完成后测试安装成功否

Java代码

[root@ganglia ~]# java -version

java version "1.5.0"

gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-4)

Copyright (C) 2007 Free Software Foundation, Inc.

This is free software; see the source for ing conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@ganglia ~]#

3, 安装Maven,安装完成后测试安装与否

Java代码

[root@ganglia ~]# mvn -v

Apache Maven 3.2.1 (; 2014-02-15T01:37:52+08:00)

Maven home: /usr/local/maven

Java version: 1.7.0_25, vendor: Oracle Corporation

Java home: /usr/local/jdk1.7.0_25/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "linux", version: "2.6.32-431.el6.x86_64", arch: "amd64", family: "unix"

[root@ganglia ~]#

4, 安装Ant, 安装完成后,依旧测试成功与否

Java代码

[root@ganglia ~]# ant -version

Apache Ant(TM) version 1.9.4 compiled on April 29 2014

[root@ganglia ~]#

5,安装protobuf,安装方式,从官网下载tar.gz的包,并上传到linux上解压,然后进入根目录下,执行如下的几个命令:

Java代码

./configure

make

make check

make install

然后,执行如下命令,进行测试安装成功与否

Java代码

[root@ganglia protobuf-2.5.0]# protoc

Missing input file.

[root@ganglia protobuf-2.5.0]#

6,从hadoop官网下载hadoop2.2.0的版本的源码的src的包,并查看目录

Java代码

[root@ganglia ~]# cd hadoop-2.2.0-src

[root@ganglia hadoop-2.2.0-src]# ll

总用量 108

-rw-r--r--. 1 67974 users 9968 10月 7 2013 BUILDING.txt

drwxr-xr-x. 2 67974 users 4096 10月 7 2013 dev-support

drwxr-xr-x. 4 67974 users 4096 6月 9 17:05 hadoop-assemblies

drwxr-xr-x. 3 67974 users 4096 6月 9 17:27 hadoop-client

drwxr-xr-x. 9 67974 users 4096 6月 9 17:14 hadoop-common-project

drwxr-xr-x. 3 67974 users 4096 6月 9 17:26 hadoop-dist

drwxr-xr-x. 7 67974 users 4096 6月 9 17:20 hadoop-hdfs-project

drwxr-xr-x. 11 67974 users 4096 6月 9 17:25 hadoop-maprece-project

drwxr-xr-x. 4 67974 users 4096 6月 9 17:06 hadoop-maven-plugins

drwxr-xr-x. 3 67974 users 4096 6月 9 17:27 hadoop-minicluster

drwxr-xr-x. 4 67974 users 4096 6月 9 17:03 hadoop-project

drwxr-xr-x. 3 67974 users 4096 6月 9 17:05 hadoop-project-dist

drwxr-xr-x. 12 67974 users 4096 6月 9 17:26 hadoop-tools

drwxr-xr-x. 4 67974 users 4096 6月 9 17:24 hadoop-yarn-project

-rw-r--r--. 1 67974 users 15164 10月 7 2013 LICENSE.txt

-rw-r--r--. 1 67974 users 101 10月 7 2013 NOTICE.txt

-rw-r--r--. 1 67974 users 16569 10月 7 2013 pom.xml

-rw-r--r--. 1 67974 users 1366 10月 7 2013 README.txt

[root@ganglia hadoop-2.2.0-src]#

7,修改/root/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml文件,增加,补丁内容,这部分是hadoop2.2.0的bug,如果是其他的2.x的版本,可以视情况而定,内容如下:

Xml代码

<dependency>

<groupId>org.mockito</groupId>

<artifactId>mockito-all</artifactId>

<scope>test</scope>

</dependency>

<!--新增的内容开始 -->

<dependency>

<groupId>org.mortbay.jetty</groupId>

<artifactId>jetty-util</artifactId>

<scope>test</scope>

</dependency>

<!--新增的内容结束 -->

<dependency>

<groupId>org.mortbay.jetty</groupId>

<artifactId>jetty</artifactId>

<scope>test</scope>

</dependency>

8,修改完毕后,回到hadoop-2.2.0-src的跟目录下执行编译打包命令:

Java代码

mvn clean

mvn package -Pdist,native -DskipTests -Dtar

然后等待半个小时左右的编译时间,网速快的话,时间可能会更短,编译完成 编译好的hadoop包,

Java代码

[root@ganglia target]# pwd

/root/hadoop-2.2.0-src/hadoop-dist/target

[root@ganglia target]# ll

总用量 282348

⑼ windows本地没有hadoop 下怎么配置linux 下的hadoop home

Windows下运行Hadoop,通常有两种方式:一种是用VM方式安装一个Linux操作系统,这样基本可以实现全Linux环境的Hadoop运行;另一种是通过Cygwin模拟Linux环境。后者的好处是使用比较方便,安装过程也简单。在这里咱们就来看看第二种方案:如何再Windows下快速安装一个Hadoop环境,并结合Eclipse开发环境研究和调整Hadoop代码。整个安装过程包括以下三大步骤:安装和配置Cygwin(http://cygwin.com/install.html)安装和配置Hadoop-1.2.1(http://hadoop.apache.org/docs/stable/cluster_setup.html)安装和配置Eclipse开发环境1安装和配置Cygwin在Windows下通过安装Cygwin模拟Linux环境,然后再安装Hadoop,是一种简单方便的方式,为Hadoop准备的模拟Linux环境安装过程如下:1.1下载安装文件针对不同系统类型下载相应的安装文件,下载地址:http://cygwin.com/install.html。我这里的系统是window 7所以下载的是setup-x86.exe1.2安装Cygwin刚刚下载的文件是模拟Linux系统所依赖的软件包下载和管理工具,以后想要在模拟Linux环境中安装或更新软件都需要通过这个工具来完成,下面我们就先运行起来这个工具如下:左键双击setup-x86.exe文件运行安装向导:cygwin安装点击【下一步】按钮进入程序引导安装页,这里有三个选项,选择第一项网络安装:网络安装:通过网络下载并安装软件包下载但不安装:通过网络下载软件包本地安装:是用本地软件包安装cygwin安装点击【下一步】进入选择模拟Linux系统的根目录和用户的向导页。在Linux的文件系统中有且只有一个根目录,在这里选择目录就是Linux中的那个根目录了,这里选择默认:c:\cygwin;用户选择第一项:本系统的所有有效用户。cygwin安装点击【下一步】选择本地软件包目录,该工具会自动记住并将以后下载的所有软件包都会放到这里指定的目录。我这里选择:C:\Users\Administrator\Desktop\1,如果选择不存在目录,就好提示是否创建目录选Yes就OK。cygwin安装点击【下一步】选择您的网络连接,我这里使用的是代理服务器上网,所以我选择第二项:使用IE浏览器代理设置。经测试选择第三项输入代理服务器地址和端口,不能正常访问网络,原因不明。cygwin安装点击【下一步】,等待下载镜像站点列表,下载完成后出现选择下载软件包的站点。如图:cygwin安装根据自己的情况选择合适的下载地址,我这里选择了国内的163站点,点击【下一步】,这个工具就会自动下载软件包信息列表下载完成后进入安装软件包选择页,如下图:cygwin安装这一步比较重要,以下软件包要确保被安装:cygwin安装注:这个软件包列表由前到后包括:分类、当前安装版本,最新版本,安装可执行文件?,安装源代码文件?,大小,包名称和说明。基础软件包:Base及其下面的所有软件包,操作方法:点击Base后面的Default为Install。SSH相关软件包:Net下的OpenSSL和和OpenSSH,用于Hadoop需要的SSH访问,操作方法:点击【+】展开Net节点,点击各个软件包前的最新版本号列的Keep为版本号即为选中安装。其他软件包根据自己的需要选中是否安装即可,我这里还选中了Emacs、VIM、Perl、Python、Ruby、Science、subversion等常用工具。选择完软件包点击【下一步】,进入自动下载与安装,如下图:cygwin安装点击【下一步】进入向导结束页,勾选创建桌面快捷方式点击【完成即可】,如图:cygwin安装到这里,您已经完成了模拟Linux环境的安装,左键双击桌面上的图标打开这个模拟Linux的终端窗口输入几个常用Linux命令体验下这个模拟的Linux系统吧,除了可以执行Linux常用命令外,还可以执行Windows的命令例如:net start service_name等。体验完成后继续下面的配置工作。1.3配置Cygwin的SSH服务Cygwin安装完成后,需要先配置SSH服务,以满足Hadoop提出的SSH无密码登入,过程如下:打开模拟Linux的终端,进入Linux环境执行命令:ssh-host-config如图:Hadoop安装第一次询问:“Should privilege separation be used? (yes/no)”,输入no回车。第二次询问:“Do you want to install sshd a service?”,输入yes回车。第三次提示:“Enter the value of CYGWIN for the demon: []”,直接回车。第四次询问:“Do you want to use a different name? (yes/no)”,输入no回车。第五次提示:“Please enter the password for user ‘cyg_server’:”,输入密码回车,在此输入密码回车。最后提示配置完成。1.4启动SSH服务在Linux终端或Windows命令行执行net start sshd或命令cygrunsrv –S sshd启动SSH服务。测试ssh登入本机:在终端执行命令:ssh localhost提示输入密码:输入密码回车,如下图:Hadoop安装 1.5配置SSH免密码登入在终端执行命令:ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa生成秘钥。执行命令:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys生成认证文件。执行命令:ssh localhost测试是否无需输入密码即可登入。Hadoop安装1.6Cygwin使用积累1.6.1在cygwin里访问Windows盘cd /cygdrive/c1.6.2整合cygwin命令到Windows中假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)。添加完后就可以直接在cmd.exe下面执行tar czvf xxx.tgz ./基本上所有的命令都可以用了,包括ls,more,less,find,grep等。1.6.3使用TGZ备份将cygwin的BIN加入到PATH建一个BAT文件:@echo offd:cd d:/website/8thmanagetar czvf 8thmanage.tgz 8thmanage1.6.4Windows使用SHELL脚本将cygwin的BIN加入到PATH在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN的,里面需要访问C盘的,请用/cygdrive/c/在Windows下执行:d:/cygwin/bin/bash d:/cygwin/var/t.sh(可以定期执行)1.6.5同步Windows系统用户mkpasswd -l > /etc/passwdmkgroup -l > /etc/group如果有Domain的话,需要加上-d domainname1.6.6安装系统服务cygrunsrv1.6.7cygwing下使用rsync安装rsync组件进入cygwin,配置服务器vi /etc/rsyncd.conf…screts file=/etc/tom.ipaddr.pas配置文件,参考我写的另外一篇rsync的文章,注意:密码文件权限必须是0400chmod 0400 /etc/tom.ipaddr.pas启动服务端rsync –daemon客户端同步在客户端的cygwin下面,运行rsync同步,具体命令,请参考另外一篇rsync的文章。1.6.8cygwin下使用SSHD需要安装了cygrunsrc,openssh运行ssh-host-config -y一路回车,直到出现CYGWIN=时,输入tty ntsec,再回车,(或者,增加一系统环境变量CUGWIN=nesec tty)已经安装好SSHD服务到你的Windows服务中,可以直接在服务中启动,关闭。(cygrunsrc -S sshd或者net start sshd)1.6.9中文显示vi ~/.bashrc# 让ls和dir命令显示中文和颜色alias ls=’ls –show-control-chars –color’alias dir=’dir -N –color’# 设置为中文环境,使提示成为中文export LANG=”zh_CN.GBK”# 输出为中文编码export OUTPUT_CHARSET=”GBK”~/.inputrc为set completion-ignore-case onset meta-flag onset output-meta. onset convert-meta. offcygwin.bat脚本为:@echo offset MAKE_MODE=UNIX

⑽ Linux运行脚本,调用hadoop的Mapper,报错Result Maps collection already contains value for

这个可能是程序有问题哦, 看下wo 的网名可以吗?一定可以解决的啊!!

热点内容
入侵php 发布:2025-01-18 19:01:09 浏览:801
存储的下标范围 发布:2025-01-18 19:00:57 浏览:337
文件夹怎么打开 发布:2025-01-18 18:47:07 浏览:296
杉德卡卡号和密码看哪里 发布:2025-01-18 18:43:27 浏览:712
android返回退出 发布:2025-01-18 18:43:26 浏览:601
linux采集视频 发布:2025-01-18 18:38:38 浏览:638
差异度算法 发布:2025-01-18 18:34:27 浏览:698
电脑全套配置有哪些 发布:2025-01-18 18:32:39 浏览:145
新项目源码 发布:2025-01-18 18:14:48 浏览:517
脚本设计图 发布:2025-01-18 18:06:17 浏览:601