Ubuntu上搭建hadoop 2.2.0环境,配置yarn(单机)

时间:2023-01-21 11:59:00

how to install jdk in ubuntu

1、首先到oracle下载上下载jdk-7u5-linux-x64.tar.gz

2、将jdk-7u5-linux-x64.tar.gz拷贝到/usr/lib/jdk/目录下面,这里如果没有jdk文件夹,则创建该文件夹,命令:

sudo mkdir jdk //创建文件夹jdk

sudo cp -r ~/download/jdk-7-linux-x64.tar.gz /usr/lib/jdk/ //把下载的文件拷贝到心创建的目录下面

sudo tar -zxvg jdk-7-linux-x64.tar.gz //解压缩文件

3、设置环境变量,用gedit打开/etc/profile文件

sudo gedit /etc/profile

在文件的最后面增加:

export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_51

export JRE_HOME=/usr/lib/jdk/jdk1.7.0_51/jre

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib


4、将系统默认的jdk修改过来


$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_05/bin/java 300

$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_05/bin/javac 300

$ sudo update-alternatives --config java $ sudo update-alternatives --config javac

5、检测,输入java -version


java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b05) Java HotSpot??(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

how to install hadoop 2.2.0 

安装依赖包

$ sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev $ sudo apt-get install openssh-client $ sudo apt-get install openssh-server 安装配置 protobuf

下载最新的protobuf:  https://code.google.com/p/protobuf/downloads/list 解压,依次运行 $ ./configure --prefix=/usr $ sudo make $ sudo make check $ sudo make install 检查一下版本 $ protoc --version libprotoc 2.5.0 安装配置 maven $ sudo apt-get install maven 建立ssh信任

$ cd /home/hduser 

$ ssh-keygen -t rsa -P "" 

$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys 

用命令验证一下是否可以免密码链接localhost 

$ ssh localhost

编译 hadoop 2.2.0

解压到用户目录 /home/wilbur/. 进入 hadoop-2.2.0-src 目录

因为已经安装了maven, protobuf, java环境也有了,compiler也有了所以直接运行 

$ mvn package -Pdist,native -DskipTests? -Dtar 

编译过程中会出现一个错误,这个错误是由于hadoop2.2.0的代码bug导致的,

解决办法如下 hadoop-common-project/hadoop-auth/pom.xml 在文件中添加以下配置

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

然后重新运行mvn clean package -Pdist,native -DskipTests?? -Dtar命令编译即可

(需注意文件的所有者,修改为当前用户,否则之后可能出错)

配置相关文件

1)配置etc/hadoop目录下的core-site.xml,hdfs-site.xml,mapred-site.xml 

core-site.xml:

 <?xml version="1.0" encoding="UTF-8"?> 

<configuration>

<property>

<name>fs.default.name</name> <value> hdfs://localhost/</value>

</property>

</configuration>

hdfs-site.xml:

 <?xml version="1.0" encoding="UTF-8"?> <configuration>

<property>

<name>dfs.replication</name> <value>1</value>

</property>

<property>
    <name>dfs.namenode.name.dir</name>
    <value>/root/jhh/hadoop/yarn_data/hdfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/root/jhh/hadoop/yarn_data/hdfs/datanode</value>
  </property>
</configuration>
创建文件夹:
mkdir -p /root/jhh/hadoop/yarn_data/hdfs/namenode
mkdir -p /root/jhh/hadoop/yarn_data/hdfs/datanode



 mapred-site.xml:

<?xml version="1.0" encoding="UTF-8"?> <configuration>

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

</configuration>

yarn-site.xml:

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


启动hadoop

初始化 启动 停止

 ./bin/hdfs namenode -format

 ./sbin/start-dfs.sh 

./sbin/start-yarn.sh 

(启动nodemanager存在问题,问题可能出在yarn_damons.sh上,需要手动开启: ./sbin/yarn-daemon.sh start nodemanager)

./sbin/stop-dfs.sh 

./sbin/stop-yarn.sh

jps命令来查看node是否都启起来了


问题及解决方案

1.启动过程中出现问题: JAVA_HOME IS NOT SET. 

解决方法是修改etc/hadoop/hadoop-env.sh文件,添加如下内容

export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_51

2.HADOOP_CONF_DIR 未配置,出现错误:Error: Cannot find configuration directory: 在/etc/profile中添加:

export HADOOP_HOME=/root/jhh/hadoop/hadoop-0.23.9

export YARN_HOME=/root/jhh/hadoop/hadoop-0.23.9

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

3.访问log文件,permisson denied。 chmod修改log文件夹权限。


总结:

今天刚配置了一遍,只是单机版的伪分布式环境,之后在测试机上搭一遍。

刚开始学习hadoop,安装配置过程也走了一些弯路,希望多多讨论,互相学习。