你好,游客 登录 注册 搜索
背景:
阅读新闻

ubuntu14.04安装hadoop2.7.1伪分布式和错误解决

[日期:2015-12-01] 来源:博客园-原创精华区  作者: [字体: ]

ubuntu14.04安装hadoop2.7.1伪分布式和错误解决

需要说明的是我下载的是源码,通过编译源码并安装

一、需要准备的软件:

1.JDK和GCC

设置JAVA_HOME:

vim ~/.bashrc

在最后增加:export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31,保存退出。

使设置立即生效:source ~/.bashrc

测试JAVA_HOME是否设置成功,输出了上面设置的路径表示成功:

echo $JAVA_HOME

2.安装maven

解压 tar -zxvf apache-maven-3.2.5-bin.tar.gz

配置环境变量,编辑/etc/profile或者~/.bashrc文件

export MAVEN_HOME=/opt/maven/current/bin

export PATH=$PATH:$MAVEN_HOME/bin

最后要source /etc/profile

通过mvn --version来检查是否安装正常

3.安装protobuf

解压 tar -zxvf protobuf-2.5.0.tar.gz

进入protobuf-2.5.0目录,执行下面的命令

./configure

make

make check

sudo make install

可以通过protoc --version来查看是否安装正常

如果失败,则:

1. 将所有的用户需要用到的库放到/usr/loca/lib;

2. 通过vi在/etc/ld.so.conf.d/目录下新建文件usr-libs.conf,内容是:/usr/local/lib

3. #sudo ldconfig

4.安装cmake

解压 tar -zxvf cmake-3.4.0.tar.gz

进入cmake-3.4.0目录,执行下面的命令

./bootstrap

make

sudo make install

可以通过cmake --version来查看是否安装正常

5.安装autotool

sudo apt-get install autoconf automake libtool

6.配置ssh免密码登录

安装ssh server:

sudo apt-get install openssh-server

cd ~/.ssh/                        # 若没有该目录,请先执行一次ssh localhost

ssh-keygen -t rsa              # 会有提示,都按回车就可以

cat id_rsa.pub >> authorized_keys  # 加入授权

使用ssh localhost试试能否直接登录

二、编译haodoop:

1.下载源码包hadoop-2.7.1-src.tar.gz并解压

tar -zxvf hadoop-2.7.1-src.tar.gz

2.进入hadoop-2.7.1-src目录,执行

mvn clean package -Pdist,native -DskipTests -Dtar

3. 在编译的过程中遇到了缺少库的错误,所以就需要先安装缺少的库

比如错误信息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin

apt-get install libglib2.0-dev

apt-get install libssl-dev

如果在编译过程中还报类似错,请自行通过类似方式去网上找。

接下来就是漫长的等待,当你看到一系列的SUCCESS之后,你就成功了。

4.编译好的hadoop-2.7.1.tar.gz在hadoop-2.7.1-src木目录下的hadoop-dist/target/的目录中,接下来就可以安装了。

5.安装Hadoop2.7.1

将第四步编译好的目标文件copy到/opt/hadoop/hadoop_2_7_1_64

命令:

sudo cp -r hadoop-dist/target/hadoop-2.7.1 /opt/hadoop/hadoop_2_7_1_64

然后建立软链接

sudo ln -s /opt/hadoop/hadoop_2_7_1_64 current

 

6.配置环境变量

vim ~/.bashrc

#HADOOP VARIABLES START

export HADOOP_INSTALL=/opt/hadoop/current

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"

#HADOOP VARIABLES END

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31

export JRE_HOME=${JAVA_HOME}/jre

export MAVEN_HOME=/opt/maven/current/bin

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$HIVE_HOME/lib:$CLASSPATH

export PATH=${PATH}:${JAVA_HOVE}/bin:$JRE_HOME/bin:$MAVEN_HOME:$HADOOP_INSTALL/bin

使设置立即生效:source ~/.bashrc

检查是否安装成功,执行命令,如果出现命令帮助表示成功:hdfs

7.配置伪分布式

切换至配置文件目录:  cd /opt/hadoop/current/etc/hadoop

配置 core-site.xml,执行命令:vim core-site.xml。将文件中的<configuration></configuration>替换为:

<configuration>

<property>

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

<value>file:/opt/hadoop/current/tmp</value>

<description>Abase for other temporary directories.</description>

</property>

<property>

<name>fs.defaultFS</name>

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

</property>

</configuration>

配置 hdfs-site.xml,执行命令:vim hdfs-site.xml,修改为:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

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

<value>file:/opt/hadoop/current/tmp/dfs/name</value>

</property>

<property>

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

<value>file:/usr/local/hadoop/current/tmp/dfs/data</value>

</property>

</configuration>

关于Hadoop配置项的一点说明:

虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

配置yarn-site.xml,执行命令:vim yarn-site.xml,修改为:

<configuration>

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

</configuration>

配置mapred-site.xml

从模板文件复制一个xml,执行命令:mv mapred-site.xml.template mapred-site.xml

执行命令:vim mapred-site.xml

将文件修改为

<configuration>

<property>

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

<value>yarn</value>

</property>

</configuration>

配置完成后,执行格式化:hdfs namenode -format。倒数第五行出现Exitting with status 0 表示成功,若为 Exitting with status 1 则是出错。

如果在这里还出错,很有可能是缺少什么库导致的。

8.运行

在运行所有服务之前请先运行命令:

hdfs namenode -format error

WARN namenode.NameNode: Encountered exception during format:

java.io.IOException: Cannot create directory /usr/local/hd/dfs/name/current

java.io.IOException: Cannot create directory /usr/local/hd/dfs/name/current

此错误表示hadoop文件用户权限不够,需要修改:

sudo chown coco:coco -R hadoop

最后启动hadoop所有的进程:

sh sbin/start-all.sh

查看各个进程是否正常启动,执行:jps。如果一切正常,将看到下列结果:

11010 SecondaryNameNode

10596 NameNode

11349 NodeManager

10777 DataNode

10442 Jps

PS:如果你在本机使用了oh-my-zsh这个命令,则有可能会遇到下面的问题

问题一:

➜  ~  source ~/.bashrc

/etc/bashrc:37: command not found: shopt

/etc/bashrc:fc:38: event not found: -a

/etc/bashrc:40: command not found: shopt

/etc/bashrc:51: command not found: shopt

因为zsh的环境变量需要配置在~/.zshrc中,不再是~/.bashrc,所以你可以在相同的环境变量配置复制到~/.zshrc文件中,

source ~/.zshrc文件

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

问题二:

15/11/27 10:55:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

无法加载本地库

可以先用命令查看状态:

hadoop checknative –a

结果发现全是false,那么请检查环境变量配置文件里面的如下两项配置,是否添加了native:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"

如果没有请添加上,然后再运行hadoop checknative -a命令:

结果会如下:

-> % hadoop checknative -a

15/11/30 11:24:38 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version

15/11/30 11:24:38 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library

Native library checking:

hadoop:  true /opt/hadoop/hadoop_2_7_1_64/lib/native/libhadoop.so.1.0.0

zlib:    true /lib/x86_64-linux-gnu/libz.so.1

snappy:  false

lz4:    true revision:99

bzip2:  false

openssl: true /usr/lib/x86_64-linux-gnu/libcrypto.so

15/11/30 11:24:38 INFO util.ExitUtil: Exiting with status 1

到这里还是有两个false,其实snappy,bzip2,lz4,zlib都是压缩库,所以有两个为true,另外两个为false也没有太大的影响了。

问题三:

要注意安装的hadoop所属的用户和用户组与你本机的权限问题。

可以将其修改为本机常用用户和用户组,命令:

sudo chown coco:coco -R hadoop

问题四:

运行hadoop fs -ls时提示

ls: `.\\\': No such file or directory

此时,需要先建立目录

hadoop fs -mkdir /user

再运行hadoop fs -ls /

-> % hadoop fs -ls /

Found 1 items

drwxr-xr-x  - coco supergroup          0 2015-11-30 10:38 /user

到此就结束了安装全部过程。





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款