Hadoop从0开始 (安装配置:转) (一) - 沐魇

之前一直在找安装教程 都是0.20版本的 弄了好久没有弄出来..我下载的是0.23.11

后来发现是新版跟旧版有很大的不同.官方文档都不更新简直是丧心病狂..

今天终于找到新版的安装配置方法.多次失败后自己理解并修改了一些步骤添加了一些细节说明。分享出来.

安装环境:

  1. 系统:Ubuntu 14   64bit
  2. hadoop:0.23.11
  3. jdk:1.8.0_11

安装步骤:

一.安装JDK

安装 jdk,并且配置环境以及设置成默认

检查jdk是否正确安装和配置

在主目录下执行java -version

如果出现下面类似结果则ok

?

[email protected]:/opt/hadoop$ java  -version

java version "1.8.0_11"

Java(TM) SE Runtime Environment (build 1.8.0_11-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

记得系统中java_home也要设置好

二.安装hadoop

1.下载:

http://mirror.bit.edu.cn/apache/hadoop/common/

选择你要的版本。我选择的是最新的 0.23.11

hadoop是32位的如果是64位系统最好使用源码安装

不然之后也要重新编译64位库 很麻烦

2.安装

ubuntu下解压然后改名为hadoop方便敲命令

再移动到 /opt/下  用sudo mv

现在hadoop的目录即  /opt/hadoop

以后的命令我都是按这个位置来。

三.安装ssh server

这个是ssh的服务

sudo apt-get install openssh-server

四.添加hadoop用户

为了方便hadoop的管理,最好添加一个单独的用户来管理hadoop,例如添加hadoop用户

执行以下命令

sudo adduser hadoop

然后会提示输入密码,设置好密码就可以了

这时候只要执行

su hadoop

输入密码后就可以切换到hadoop用户下

注:

为了使hadoop帐号下能够sudo,在 /etc/sudousers 里

sudo    ALL=(ALL:ALL) ALL的后面添加
hadoop   ALL=(ALL:ALL) ALL

五.配置本机ssh无密码登录

[email protected]:~$ ssh-keygen -t rsa 
ssh-keygen -t rsa命令会在当前目录下产生一个隐藏.ssh文件夹,以参数 rsa (或者 dsa) 方式在里面产生公钥和密钥,名称为  id_rsa.pub 和id_rsa ,可以把公钥给别的计算机来无密码登录你电脑,相当于通行证。

[email protected]:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

authorized_keys便是存放别人的公钥的地方。这个命令就是复制到里面。

测试:

[email protected]:~$ ssh localhost
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)

* Documentation:  https://help.ubuntu.com/

Last login: Wed Aug 13 11:25:32 2014 from localhost

六.配置Hadoop

chmod -R 777 /opt/hadoop

改变hadoop的权限,使所有人可读可写。

su hadoop

切换到hadoop用户

1. 配置jdk及hadoop环境变量

在~/.bashrc文件里追加(只有当前用户可以使用的配置,切记切换到hadoop)

下面所有因安装而异的配置在我会用粗体标注。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_11
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/opt/hadoop
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$HADOOP_HOME/bin:$PATH
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

2. Hadoop文件配置

[email protected]:~$ cd /opt/hadoop/etc/hadoop/

[email protected]:/opt/hadoop/etc/hadoop$ vi yarn-env.sh

追加以下配置 (下面所有因安装而异的配置在我会用粗体标注。)

export HADOOP_FREFIX=/opt/hadoop
export HADOOP_COMMON_HOME=${HADOOP_FREFIX}
export HADOOP_HDFS_HOME=${HADOOP_FREFIX}
export PATH=$PATH:$HADOOP_FREFIX/bin
export PATH=$PATH:$HADOOP_FREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_FREFIX}
export YARN_HOME=${HADOOP_FREFIX}
export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop

下面在 /opt/hadoop/etc/hadoop/ 目录下进行一系列配置(这些文件的模板都在template里面,学到深入的时候再分享。我后面遇到的问题也与此有关。)

vi core-site.xml

?

<configuration>

<property> 

 

    <name>fs.defaultFS</name> 

 

    <value>hdfs://localhost:9000</value> 

 

  </property>

 

  <property>  

 

    <name>hadoop.tmp.dir</name> 

 

    <value>/opt/hadoop/hadoop-root</value> 

 

  </property> 

 

<property>

 

  <name>fs.arionfs.impl</name>

 

  <value>org.apache.hadoop.fs.pvfs2.Pvfs2FileSystem</value>

 

  <description>The FileSystem for arionfs.</description>

 

</property> 

</configuration>

注意下面配置中的地址,也与安装路径有关。

vi hdfs-site.xml

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<configuration>

 <property>

 

    <name>dfs.namenode.name.dir</name>

 

    <value>file:/opt/hadoop/data/dfs/name</value>

 

    <final>true</final>

 

    </property>

 

    <property>

 

    <name>dfs.namenode.data.dir</name>

 

    <value>file:/opt/hadoop/data/dfs/data</value>

 

    <final>true</final>

 

    </property>

 

    <property>  

 

    <name>dfs.replication</name>

 

    <value>1</value>

 

    </property>

 

    <property>

 

    <name>dfs.permission</name>

 

    <value>false</value>

 

    </property>

</configuration>

vi mapred-site.xml 这个是新文件

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

<configuration>

<property>

 

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

 

    <value>yarn</value>

 

    </property>

 

    <property>

 

    <name>mapreduce.job.tracker</name>

 

    <value>hdfs://localhost:9001</value>

 

    <final>true</final>

 

    </property>

 

    <property>

 

    <name>mapreduce.map.memory.mb</name>

 

    <value>1536</value>

 

    </property>

 

    <property>

 

    <name>mapreduce.map.java.opts</name>

 

    <value>-Xmx1024M</value>

 

    </property>

 

    <property>

 

    <name>mapreduce.reduce.memory.mb</name>

 

    <value>3072</value>

 

    </property>

 

    <property>

 

    <name>mapreduce.reduce.java.opts</name>

 

    <value>-Xmx2560M</value>

 

    </property>

 

    <property>

 

    <name>mapreduce.task.io.sort.mb</name>

 

    <value>512</value>

 

    </property>

 <property>

 

    <name>mapreduce.task.io.sort.factor</name>

 

    <value>100</value>

 

    </property>    

 

    <property>

 

    <name>mapreduce.reduce.shuffle.parallelcopies</name>

 

    <value>50</value>

 

    </property>

 

    <property>

 

    <name>mapreduce.system.dir</name>

 

    <value>file:/opt/hadoop/data/mapred/system</value>

 

    </property>

 

    <property>

 

    <name>mapreduce.local.dir</name>

 

    <value>file:/opt/hadoop/data/mapred/local</value>

 

    <final>true</final>

 

    </property>

</configuration>

vi yarn-site.xml

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

<configuration>

 

<!-- Site specific YARN configuration properties -->

<property> 

 

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

 

    <value>mapreduce.shuffle</value> 

 

  </property> 

 

  <property> 

 

    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 

 

    <value>org.apache.hadoop.mapred.ShuffleHandler</value> 

 

  </property> 

 

  <property> 

 

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

 

    <value>yarn</value> 

 

  </property> 

 

  <property> 

 

    <name>user.name</name> 

 

    <value>hadoop</value> 

 

  </property> 

 

  <property> 

 

    <name>yarn.resourcemanager.address</name> 

 

    <value>localhost:54311</value> 

 

  </property> 

 

  <property> 

 

    <name>yarn.resourcemanager.scheduler.address</name> 

 

    <value>localhost:54312</value> 

 

  </property> 

<property> 

 

    <name>yarn.resourcemanager.webapp.address</name> 

 

    <value>localhost:54313</value> 

 

  </property> 

 

  <property> 

 

    <name>yarn.resourcemanager.resource-tracker.address</name> 

 

    <value>localhost:54314</value> 

 

  </property> 

 

  <property> 

 

    <name>yarn.web-proxy.address</name> 

 

    <value>localhost:54315</value> 

 

  </property> 

 

  <property> 

 

    <name>mapred.job.tracker</name> 

 

    <value>localhost</value> 

 

  </property>

</configuration>

配置完成.

七.启动并运行wordcount程序

1. 格式化namenode. 进入 /opt/hadoop/

键入 bin/hadoop namenode -format

切记若多次格式化,请先清空hdfs-site.xml中dfs.namenode.*.dir设置的文件路径里的文件。不然会冲突。不要把文件夹删了。

2. 启动

于/opt/hadoop/sbin

$ ./start-dfs.sh

$../start-yarn.sh

4.检查启动是否成功

hadoop@hanson-ThinkPad-Edge:/opt/hadoop/sbin$ jps

5036 DataNode

5246 SecondaryNameNode

5543 NodeManager

5369 ResourceManager

4852 NameNode

5816 Jps

全部存在就成功了。

5.试着运行wordcount

1)构造输入数据

新建一个文本文件

比如在 ~ 目录下的test.txt中输入一系列字母

[email protected]:/opt/hadoop$ cat ~/test.txt
a c b a b d f f e b a c c d g i s a b c d e a b f g e i k m m n a b d g h i j a k j e

记得打空格。这个示例是用来统计单词数量的,不打空格它就只统计一个了。

2)上传到hdfs

[email protected]:/opt/hadoop$  hadoop fs -mkdir /test  (在hdfs中创建一个新文件夹)
[email protected]:/opt/hadoop$  hadoop fs -copyFromLocal ~/test.txt /test   (这个指令就是从本地复制到hdfs中)
[email protected]:/opt/hadoop$ hadoop fs -ls  /test (查看test中的文件)
Found 1 items
-rw-r--r--   1 hadoop supergroup         86 2013-04-18 07:47 /test/test.txt

3)执行程序

注意版本号。

[email protected]:/opt/hadoop$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.11.jar wordcount /test/test.txt /test/out

#其中/test/out 为输出目录

4)查看结果

[email protected]:/opt/hadoop$ hadoop fs -ls /test
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2014-08-13 11:42 /test/out
-rw-r--r--   1 hadoop supergroup         86 2014-08-13 13:50 /test/test.txt

[email protected]:/opt/hadoop$ hadoop fs -ls /test/out
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2014-08-13 13:53 /test/out/_SUCCESS
-rw-r--r--   1 hadoop supergroup         76 2014-08-13 13:53 /test/out/part-r-00000

[email protected]:/opt/hadoop$ hadoop fs -cat /test/out/part-r-00000
14/08/13 13:55:24 INFO util.NativeCodeLoader: Loaded the native-hadoop library
a    7
b    6
c    4
d    4
e    4
f    3
g    3
h    1
i    3
j    2
k    2
m    2
n    1
s    1

最后记得

$ ./stop-dfs.sh

$ ./stop-yarn.sh

--------------------

下面说一下我所遇到的问题

1.第一个错误是碰到说找不到加载类namenode

解决过程: 经过查找发现是xml配置文件写错了 多了一个符号 删去后好了

2.第二个碰到的问题就是datanode始终无法启动

解决过程:经过查找logs目录下的datanode启动的记录

发现抛出 IOException ,大概是 Incompatible clusterIDs  。也就是clusterIDs 有矛盾。最后找到原因是由于总是配置不好,我进行了多次的格式化。所以才会冲突

切记若多次格式化,请先清空hdfs-site.xml中dfs.namenode.*.dir设置的文件路径里的文件。不然会冲突。不要把文件夹删了。

于是有了上面这句忠告。

3.第三个碰到的问题是在最后一步查看输出文档时。结果之前提示如下。

Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /opt/hadoop/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It‘s highly recommended that you fix the library with ‘execstack -c <libfile>‘, or link it with ‘-z noexecstack‘.
14/08/13 13:55:24 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
大概就是说我本地库无法加载。

解决方法:查找到原因是因为hadoop用的是32位的库而系统是64位的。

想消除这个warning需要编译一个64位的库。或者一开始就用源码安装。心累。于是去官网下载了 src  (http://mirror.bit.edu.cn/apache/hadoop/common/

另外还需要安装 maven 和 CMake 还有protobuf (过程略)

最后进入源码目录 敲下 mvn package -Pdist,native -DskipTests 编译

结果出现了另外的问题,报出Error提示不准使用自关闭元素  <p/> 于是我去源码里把所有的<p/>删除了 (不知道是标准改变的原因还是什么)

之后还出现了各种各样的问题。。一般是缺少某个项目造成的 比如  protobuf  这个也得下 过程略。

4.使用hadoop dfsadmin -report 类似的操作时 提示:

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

解释:新版这样的命令已经由hadoop变成了hdfs

----------------------------------------

其他经验:

1.hadoop 命令设置(原始命令过长使用别名简化命令):在~/.bashrc 中添加如下:
#alias for hadoop
alias hls=‘hadoop fs -ls‘
alias hlsr=‘hadoop fs -lsr‘
alias hcp=‘hadoop fs -cp ‘
alias hmv=‘hadoop fs -mv‘
alias hget=‘hadoop fs -get‘
alias hput=‘hadoop fs -put‘
alias hrm=‘hadoop fs -rm‘
alias hmkdir=‘hadoop fs -mkdir‘
alias hcat=‘hadoop fs -cat‘
alias hrmr=‘hadoop fs -rmr‘
alias hstat=‘hadoop fs -stat‘
alias htest=‘hadoop fs -test‘
alias htext=‘hadoop fs -text‘
alias htouchz=‘hadoop fs -touchz‘
alias hdu=‘hadoop fs -du‘
alias hdus=‘hadoop fs -dus‘
alias hchmod=‘hadoop fs -chmod‘
alias hchgrp=‘hadoop fs -chgrp‘
alias hchown=‘hadoop fs -chown‘
alias htail=‘hadoop fs -tail‘
alias hjar=‘hadoop jar‘

以后就可以使用这些简化命令来代替了。

时间: 2024-11-10 07:50:11

Hadoop从0开始 (安装配置:转) (一) - 沐魇的相关文章

Hadoop从0开始 (安装配置:转) (一)

之前一直在找安装教程 都是0.20版本的 弄了好久没有弄出来..发现新版跟旧版有很大的不同 今天终于找到新版的安装配置方法.分享出来. 安装环境: 系统:Ubuntu 12.10 hadoop:0.23.6 jdk:sun 1.7.0_21 安装步骤: 一.安装JDK 安装 orcale jdk,并且配置环境以及设置成默认(略) 检查jdk是否正确安装和配置 在主目录下执行java -version 如果出现下面类似结果则ok [email protected]:~$ java -version

Hadoop-1.0.4 安装配置

Hadoop-1.0.4 安装配置 一.           安装VMware 本人使用的是11.1.2 build-2780323版本 不详细讲述. 二.           在VMware上安装ubuntu 本人使用的是ubuntu 14.10 (为了后续步骤的说明,本人在安装时的用户名.密码均定为hadoop) 开启虚拟机后,调整时间区域,调整系统语言(可选) 三.           克隆虚拟机 关掉虚拟机,在VMware中将安装好的ubuntu克隆出来,这里克隆出了两个当做slave.

Hadoop 3.0.0-alpha2安装(一)

1.集群部署概述 1.1 Hadoop简介 研发要做数据挖掘统计,需要Hadoop环境,便开始了本次安装测试,仅仅使用了3台虚拟机做测试工作. 简介--此处省略好多--,可自行查找 -- 从你找到的内容可以总结看到,NameNode和JobTracker负责分派任务,DataNode和TaskTracker负责数据计算和存储.这样集群中可以有一台NameNode+JobTracker,N多台DataNode和TaskTracker. 1.2版本信息 本次测试安装所需软件版本信息如表1-1所示.

fedora gtk+ 2.0环境安装配置

1.安装gtk yum install gtk2 gtk2-devel gtk2-devel-docs 2.测试是否安装成功 pkg-config --cflags --libs gtk+-2.0 执行此命令,看看能否把相应的路径和库显示出来,如果可以,说明安装成功 3.写个小测试程序 4.编译 敲入make命令进行编译,编译后运行就可以看见窗体显示在屏幕上 fedora gtk+ 2.0环境安装配置

resin4.0.25 安装配置 及结合eclipse开发

resin4.0.25 安装配置 及结合eclipse开发 本文大部分内容是对官网的翻译,及自己配置后的一些体会. 一.  基于win  ,resin基本安装1,安装jdk1.6或更高版本2,配置环境变量JAVA-HOME  ,RESIN-HOME3,配置classpath %RESIN-HOME%\lib\resin.jar (如果是win7的话没必要设置) 否则报异常:com.caucho.loader.SystemClassLoader4,解压resin-4.0.255, 点击resin.

IBM WebSphere Application Server Network Deployment 8.5.0.X 安装配置及补丁升级指南之Windows系统篇

自从IBM WebSphere Application Server(简称WAS)8.0发布以来,这个版本以及更高版本的安装与之前的WAS 5.x.6.x.7.x版本(也称传统的WAS版本)直接安装的方式做了一些变动,都需要通过IBM Installation Manager(简称IIM)安装管理工具来进行. 为方便新用户在安装时更加容易地完成安装与配置,特书写此安装指南以备参考. 下载地址为:http://www.java2class.net/bbs/viewthread.php?tid=24

CentOS 6.5+Zabbix2.0.6安装配置一. Zabbix安装1.1安装LAMP环境及依赖包

今天公司要我们安装zabbix,因为第一次安装所有遇到了很多问题都解决了,也自己写了脚本,后面会提到, 安装过程中遇到的问题我也截图出来,按我步骤安装下来,应该都没问题的.后续会分享下zabbix的使用更加详细说明文档. 现在版本换的快.不过我还是用2.0.6   这个可以用在2.2.0以上都没问题,亲自测试了. CentOS 6.5+Zabbix2.0.6安装配置 一. Zabbix安装 1.LAMP环境 #yum install mysql-server httpd php 这个需要安装下,

hadoop2.6和hbase1.0单机版安装配置

环境 系统:Ubuntu 14.04 hadoop版本:2.6.0 hbase版本:1.0 jdk版本:1.8 下载地址:Apache上慢慢找吧~~ jdk的环境配置这里就不列出来了,首先讲一下hadoop配置吧. hadoop安装 1.安装位置:/opt 2.创建hadoop用户组 sudo addgroup hadoop 3.创建hadoop用户 sudo adduser -ingroup hadoop hadoop 4.给hadoop添加权限 sudo vim /etc/sudoers 在

Hadoop集群_Hadoop安装配置

1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构. 对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve.一个HDFS集群是由一个NameNode和若干个DataNode组成的.其中Nam