我是靠谱客的博主 超级冬天,最近开发中收集的这篇文章主要介绍ubuntu安装hadoop详细步骤 前提添加Hadoop用户组和用户 配置SSH 下载Hadoop 2.2.0 (2.x.x)配置Hadoop环境配置Hadoop格式化 namenode启动服务测试并运行示例网页界面Trouble-shooting,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Hadoop官方网站对其安装配置hadoop的步骤太粗略,在这篇博客中,我会详细介绍在ubuntu中如何安装hadoop,并处理可能出现的一些问题。这里介绍的方法是用一台机器虚拟多个节点,这个方法已在如下环境中测试通过:
OS: Ubuntu 13.10
Hadoop: 2.2.0 (2.x.x)
个人认为在其他版本上安装Hadoop 2.x.x的方法基本相同,因此如果严格按照我给的步骤,应该不会有问题。
前提
安装 jdk 和 openssh
$ sudo apt-get install openjdk-7-jdk
$ java -version
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.13.10.1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
$ sudo apt-get install openssh-server
openjdk的默认路径是 /usr/lib/jvm/java-7-openjdk-amd64. 如果你的默认路径和我的不同,请再后面的操作中替换此路径。
添加Hadoop用户组和用户
$ sudo addgroup hadoop$ sudo adduser --ingroup hadoop hduser
$ sudo adduser hduser sudo
然后切换到hduser账户
配置SSH
现在你在hduser账户中。 请注意下面命令中 '' 是两个单引号 ‘
$ ssh-keygen -t rsa -P ''
将public key加入到authorized_keys中,这样hadoop在运行ssh时就不需要输入密码了
将public key加入到authorized_keys中,这样hadoop在运行ssh时就不需要输入密码了
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
现在我们测试一下ssh
现在我们测试一下ssh
$ ssh localhost
如果你被询问是否确认连接,输入yes。如果你发现在即不需要输密码,cool -- 至少到目前位置你是正确的。否则,请debug。
$ exit
$ exit
下载Hadoop 2.2.0 (2.x.x)
$ cd ~
$ wget http://www.trieuvan.com/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
$ sudo tar -xzvf hadoop-2.2.0.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv hadoop-2.2.0 hadoop
$ sudo chown -R hduser:hadoop hadoop
$ wget http://www.trieuvan.com/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
$ sudo tar -xzvf hadoop-2.2.0.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv hadoop-2.2.0 hadoop
$ sudo chown -R hduser:hadoop hadoop
配置Hadoop环境
$ cd ~
$ vim .bashrc
将下面的内容复制到.bashrc中
#Hadoop variables
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
###end of paste
退出.bashrc
$ vim .bashrc
将下面的内容复制到.bashrc中
#Hadoop variables
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
###end of paste
退出.bashrc
$ cd /usr/local/hadoop/etc/hadoop
$ vim hadoop-env.sh
$ vim hadoop-env.sh
将下面的三行加入到hadoop-env.sh中,删除原来的 "export JAVA_HOME"那行
# begin of paste
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
### end of paste
退出terminal再重新打开
# begin of paste
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
### end of paste
退出terminal再重新打开
配置Hadoop
$ cd /usr/local/hadoop/etc/hadoop$ vim core-site.xml
将下面的内容复制到 <configuration> 标签内
将下面的内容复制到 <configuration> 标签内
$ mv mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml
将下面的内容复制到 <configuration> 标签内
$ mkdir -p ~/mydata/hdfs/namenode
$ mkdir -p ~/mydata/hdfs/datanode
$ vim hdfs-site.xml
将下面的内容复制到 <configuration> 标签内
格式化 namenode
第一次启动hadoop服务之前,必须执行格式化namenode
$ hdfs namenode -format
启动服务
$ start-dfs.sh && start-yarn.sh使用jps查看服务
$ jps
如果一切顺利,你会看到:
17785 SecondaryNameNode
17436 NameNode
17591 DataNode
18096 NodeManager
17952 ResourceManager
23635 Jps
当执行start-dfs.sh的时候,你可能会看到 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ,不用担心,其实可以正常使用,我们会在trouble shooting那一节谈到这个问题。
17785 SecondaryNameNode
17436 NameNode
17591 DataNode
18096 NodeManager
17952 ResourceManager
23635 Jps
当执行start-dfs.sh的时候,你可能会看到 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ,不用担心,其实可以正常使用,我们会在trouble shooting那一节谈到这个问题。
测试并运行示例
$ cd /usr/local/hadoop
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar TestDFSIO -write -nrFiles 20 -fileSize 10
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar TestDFSIO -clean
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 2 5
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar TestDFSIO -write -nrFiles 20 -fileSize 10
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar TestDFSIO -clean
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 2 5
网页界面
Cluster status: http://localhost:8088
HDFS status: http://localhost:50070
Secondary NameNode status: http://localhost:50090
HDFS status: http://localhost:50070
Secondary NameNode status: http://localhost:50090
Trouble-shooting
1. Unable to load native-hadoop library for your platform.
这是一个警告,基本不会影响hadoop的使用,但是在之后我们还是给予解决这个warning的方法。通常来讲,出现这个warning的原因是你在64位的系统上,但是hadoop的package是为32位的机器编译的。在这种情况下,确认你不要忘记在hadoop-env.sh中加入这几行:
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
否则你的hadoop不能正常工作。如果你用的系统和hadoop的package相符(32位),这两行是不必要的。
我们不希望有warning,如何解决?方法是自己重新编译源代码。重新编译其实很简单:
安装 maven
$ sudo apt-get install maven
安装 protobuf-2.5.0 or later
$ curl -# -O https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
$ tar -xzvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./configure --prefix=/usr
$ make
$ sudo make install
$ cd ..
现在并编译hadoop源代码,注意编译之前需要先给源代码打个补丁
$ wget http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.2.0-src.tar.gz
$ tar -xzvf hadoop-2.2.0-src.tar.gz
$ cd hadoop-2.2.0-src
$ wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch
$ patch -p0 < HADOOP-10110.patch
$ mvn package -Pdist,native -DskipTests -Dtar
现在到 hadoop-dist/target/ 目录下, 你会看到 hadoop-2.2.0.tar.gz or hadoop-2.2.0, 他们就是编译后的hadoop包。 你可以使用自己编译的包,同样按照之前的步骤安装64位的hadoop。如果你已经安装了32位的hadoop,只需要替换 /usr/local/hadoop/lib/native 目录,然后将如下两行从hadoop-env.sh中移除即可:
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
我们不希望有warning,如何解决?方法是自己重新编译源代码。重新编译其实很简单:
安装 maven
$ sudo apt-get install maven
安装 protobuf-2.5.0 or later
$ curl -# -O https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
$ tar -xzvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./configure --prefix=/usr
$ make
$ sudo make install
$ cd ..
现在并编译hadoop源代码,注意编译之前需要先给源代码打个补丁
$ wget http://www.eu.apache.org/dist/hadoop/common/stable/hadoop-2.2.0-src.tar.gz
$ tar -xzvf hadoop-2.2.0-src.tar.gz
$ cd hadoop-2.2.0-src
$ wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch
$ patch -p0 < HADOOP-10110.patch
$ mvn package -Pdist,native -DskipTests -Dtar
现在到 hadoop-dist/target/ 目录下, 你会看到 hadoop-2.2.0.tar.gz or hadoop-2.2.0, 他们就是编译后的hadoop包。 你可以使用自己编译的包,同样按照之前的步骤安装64位的hadoop。如果你已经安装了32位的hadoop,只需要替换 /usr/local/hadoop/lib/native 目录,然后将如下两行从hadoop-env.sh中移除即可:
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
2. datanode 不能被启动
一个常用的方法是先删掉datanode对应的文件夹试试,注意这样做可能会丢失你的数据。另一种方法是到 /usr/local/hadoop/logs/hadoop-hduser-datanode-*.log 中检查原因并对症下药。
转自:http://blog.csdn.net/feixia586/article/details/24950111
最后
以上就是超级冬天为你收集整理的ubuntu安装hadoop详细步骤 前提添加Hadoop用户组和用户 配置SSH 下载Hadoop 2.2.0 (2.x.x)配置Hadoop环境配置Hadoop格式化 namenode启动服务测试并运行示例网页界面Trouble-shooting的全部内容,希望文章能够帮你解决ubuntu安装hadoop详细步骤 前提添加Hadoop用户组和用户 配置SSH 下载Hadoop 2.2.0 (2.x.x)配置Hadoop环境配置Hadoop格式化 namenode启动服务测试并运行示例网页界面Trouble-shooting所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复