安装环境:

  1. 系统:Ubuntu 14.10   64bit
  2. hadoop:2.5.1
  3. jdk:1.8.0_11

安装步骤:

一.安装JDK

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

sudo gedit /etc/profile

添加
export JAVA_HOME=/opt/javaexport JRE_HOME=/opt/java/jreexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

source /etc/profile (让刚刚的配置生效)

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

在主目录下执行java -version

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

hadoop@hanson-ThinkPad-Edge:/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/

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

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

不然就重新编译64位库(不编译有warning) 或者装上ubuntu的32位支持库。

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无密码登录

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

hadoop@hanson-ThinkPad-Edge:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

authorized_keys便是存放别人的公钥的地方。

测试:

hadoop@hanson-ThinkPad-Edge:~$ 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=/opt/java
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文件配置

hadoop@hanson-ThinkPad-Edge:~$ cd /opt/hadoop/etc/hadoop/

hadoop@hanson-ThinkPad-Edge:/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>
</configuration>

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

vi hdfs-site.xml

<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>
</configuration>

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

<configuration> 

<property> 

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

 <value>yarn</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

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</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中输入一系列字母

hadoop@hanson-ThinkPad-Edge:/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

hadoop@hanson-ThinkPad-Edge:/opt/hadoop$  hadoop fs -mkdir /test  (在hdfs中创建一个新文件夹)
hadoop@hanson-ThinkPad-Edge:/opt/hadoop$  hadoop fs -copyFromLocal ~/test.txt /test   (这个指令就是从本地复制到hdfs中)
hadoop@hanson-ThinkPad-Edge:/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)执行程序

注意版本号。

hadoop@hanson-ThinkPad-Edge:/opt/hadoop$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.11.jar wordcount /test/test.txt /test/out

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

4)查看结果

hadoop@hanson-ThinkPad-Edge:/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

hadoop@ubuntu:/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

hadoop@ubuntu:/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启动的记录

以下提示信息显示了NameNode和DataNode的namespaceID不一致。

java.io.IOException: Incompatible namespaceIDs in /root/tmp/dfs/data:

NameNode namespaceID = 1307672299; DataNode namespaceID = 389959598

这个问题一般是由于两次或两次以上的格式化NameNode造成的,有两种方法可以解决,第一种方法是删除DataNode的所有资料(及将集群中每个 datanode的/hdfs/data/current中的VERSION删掉,然后执行hadoop namenode -format重启集群,错误消失。<推荐>);第二种方法是修改每个DataNode的namespaceID(位于/hdfs/data /current/VERSION文件中)<优先>或修改NameNode的namespaceID(位于/hdfs/name /current/VERSION文件中),使其一致。

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解决办法有两种,推荐第一种

一:安装32位库.详细过程于另外一篇文章.

二:需要编译一个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

5.启动start-dfs.sh 时候 ,提示 Error: JAVA_HOME is not set and could not be found.

解决:我也不知道出现这样的问题是因为什么原因.在profile 和 bashrc 都已经添加了java_home .

没有办法 只好在

${HADOOP_HOME}/libexec/hadoop-config.sh 中第一行添加 export JAVA_HOME  .解决成功

下面这两种方法在实际应用中也可能会用到。

1)重启坏掉的DataNode或其他的。当Hadoop集群的某单个节点出现问题时,一般不必重启整个系统,只须重启这个节点,它会自动连入整个集群。

在坏死的节点上输入如下命令即可:

bin/Hadoop-daemon.sh start DataNode

2) 动态加入DataNode或TaskTracker。这个命令允许用户动态将某个节点加入集群中。

bin/Hadoop-daemon.sh --config ./conf start DataNode

bin/Hadoop-daemon.sh --config ./conf start tasktracker

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

其他经验:

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'

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

转载于:https://www.cnblogs.com/imyijie/p/3908489.html

Hadoop伪分布安装配置相关推荐

  1. Hadoop伪分布安装及简单使用

    如何安装Hadoop 参考: http://dblab.xmu.edu.cn/blog/install-hadoop/ 设置Hadoop环境变量 export HADOOP_HOME=/usr/loc ...

  2. linux hadoop 伪分布,linux配置Hadoop伪分布安装模式

    1)关闭禁用防火墙: /etc/init.d/iptables status 会得到一系列信息,说明防火墙开着. /etc/rc.d/init.d/iptables stop 关闭防火墙 2)禁用SE ...

  3. Hadoop伪分布安装详解(四)

    目录: 1.修改主机名和用户名 2.配置静态IP地址 3.配置SSH无密码连接 4.安装JDK1.7 5.配置Hadoop 6.安装Mysql 7.安装Hive 8.安装Hbase 9.安装Sqoop ...

  4. Hadoop伪分布安装详解(一)

    注:以下截图针对Ubuntu操作系统,对Centos步骤类似.请读者选择不同镜像即可. 第一部分:VMware WorkStation10 安装 1.安装好VMware10虚拟机软件并下载好Ubunt ...

  5. JAVA连接hbase伪分布失败_hbase伪分布安装配置

    hbase.rootdir --hbase持久保存的目录 hdfs:192.168.8.101:9000/hbase hbase.cluster.distributed --是否是分布式 true h ...

  6. Hadoop的伪分布安装 hadoop的核心思想

    Hadoop的伪分布安装 hadoop的安装分为本地模式.伪分布模式.集群模式.本地模式是运行在本地,只负责存储,没有计算功能,本书不讲述.伪分布模式是在一台机器上模拟分布式部署,方便学习和调试.集群 ...

  7. hbase 伪分布安装 java_HBase基础和伪分布式安装配置

    一.HBase(NoSQL)的数据模型 1.1 表(table),是存储管理数据的. 1.2 行键(row key),类似于MySQL中的主键,行键是HBase表天然自带的,创建表时不需要指定 1.3 ...

  8. hadoop +hbase+zookeeper 伪分布安装(超级无敌详细)

    hadoop +hbase+zookeeper 伪分布安装(超级无敌详细) hadoop 配置 图片打不开的可以点击下方链接直接去图床查看,辣鸡CSDN 安装jdk sudo apt update// ...

  9. hadoop的伪分布安装(低版本)

    1.hadoop的伪分布安装 1.1.使用root用户,密码是hadoop登录的. 1.2.修改linux的ip地址     操作:(1)在linux桌面的右上角图标,右击,选择Edit Connec ...

最新文章

  1. 清空Form表单所有内容
  2. mail ru android,mail ru app下载
  3. 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法...
  4. 房地产税迟早要来,而且会带来房价小涨。
  5. 【数据结构----笔记4】插入排序算法之【折半插入排序算法】
  6. RBF(径向基)神经网络
  7. 全球CT影像20秒诊断,阿里云为新冠AI辅助诊断系统加速 | 凌云时刻
  8. OSChina 周一乱弹 —— 只要给网,这种生活我能过一辈子
  9. Wonderware Intouch 2014R2 SP1授权教程
  10. 黄聪:让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
  11. 小米笔记本bios版本大全_聊一款被“差别对待”的笔记本电脑
  12. Android R系统Fingerprint指纹流程归纳
  13. Web前端学习上----(案例实现)
  14. Apache Ranger安全区介绍
  15. php的radio怎么设置默认是勾选的,php实现select、radio和checkbox默认选择的实例参考...
  16. Mac Android Studio 打包APK 出现的问题
  17. Bootstrap 4中使用BootstrapTable时需要导入popper.js
  18. Vue的v-html样式无效问题
  19. linux命令之partprobe
  20. 我爱Java系列---【分页查询】

热门文章

  1. Java之final关键字详解
  2. mysqld_exporter报错Error 1146: Table 'my2.status' doesn't exist
  3. Ubuntu提示软件更新
  4. Kotlin入门(28)Application单例化
  5. java在循环中删除数组元素,在循环Perl中删除数组中的元素
  6. 解决Android 输入法InputMethodService 显示时让原Activity大小计算错误问题
  7. Mybatis中的StatementType
  8. set.contains()分析
  9. 数据库设计(五)第一范式(1NF)?
  10. Linux下高效编写Shell——shell特殊字符汇总