hadoop2.2.0安装说明

                                                              hadoop2.2.0安装

                                                                    

第一部分 Hadoop2.2下载

 

Hadoop我们从Apache官方网站直接下载最新版本Hadoop2.2。官方目前是提供了linux32位系统可执行文件,(最下方有FAQ解决 64)

 

下载地址:http://apache.claz.org/hadoop/common/hadoop-2.2.0/

 

第二部分集群环境搭建

 

1、这里我们搭建一个由三台机器组成的集群:

 IP             user/passwd    hostname

192.168.101.114  root/test123  hadoop1 nn/snn/rm GNU/Linux x86_64

192.168.101.115  root/test123  hadoop2 dn/nm GNU/Linux x86_64

192.168.101.116  root/test123  hadoop3 dn/nm GNU/Linux x86_64

 

1.1 上面各列分别为IPuser/passwdhostname、在cluster中充当的角色(namenode,secondary namenode, datanode , resourcemanager, nodemanager

 

2、修改/etc/hosts文件,增加三台机器的iphostname的映射关系

 

192.168.101.114  hadoop1

 

192.168.101.115  hadoop2

 

192.168.101.116  hadoop3

 

3、打通hadoop1hadoop2hadoop3SSH无密码登陆

 

3.1 安装ssh

 

一般系统是默认安装了ssh命令的。如果没有,或者版本比较老,则可以重新安装:

 

sodu apt-get install ssh

 

3.2设置local无密码登陆

 

安装完成后会在~目录(当前用户主目录,即这里的/home/hduser)下产生一个隐藏文件夹.sshls -a可以查看隐藏文件)。如果没有这个文件,自己新建即可(mkdir .ssh)。

 

具体步骤如下:

 hadoop安装用户下执行:

1、进入.ssh文件夹

 

2 ssh-keygen -t rsa之后一路回车(产生秘钥)

 

3、把id_rsa.pub追加到授权的 key 里面去

> cat id_rsa.pub >>authorized_keys

 

切换至root 用户:

4、重启 SSH服务命令使其生效 :service sshdrestart

 

此时已经可以进行ssh  localhost的无密码登陆

 

【注意】:以上操作在每台机器上面都要进行。

 

3.3设置远程无密码登陆

 每台机器执行完后,把做为namenode机器的id_rsa.pub复制到其他两机器改名为 id_rsa_1.pub ,追加到

cat id_rsa.pub_1 >> authorized_keys

 

重启后用hadoop1 机器验证:

>ssh hadoop2

    > exit

    >ssh hadoop3

  

    >exit

   这样通道就打开了。

4、安装jdk(建议每台机器的JAVA_HOME路径信息相同)

注意:这里选择下载jdk并自行安装,而不是通过源直接安装(apt-get install

 

4.1、下载jkdhttp://www.Oracle.com/technetwork/java/javase/downloads/index.html

4.1.1 对于32位的系统可以下载以下两个Linuxx86版本(uname -a查看系统版本)

4.1.2 64位系统下载Linux x64版本(x64.rpmx64.tar.gz)

4.2、安装jdk(这里以.tar.gz版本,32位系统为例)

安装方法参考http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html

4.2.1 选择要安装java的位置,如/usr/目录下,新建文件夹java(mkdirjava)

4.2.2 将文件jdk-7u40-linux-i586.tar.gz移动到/usr/java

4.2.3 解压:tar -zxvfjdk-7u40-linux-i586.tar.gz

4.2.4 删除jdk-7u40-linux-i586.tar.gz(为了节省空间)

至此,jkd安装完毕,下面配置环境变量

4.3、打开/etc/profilevim/etc/profile

在最后面添加如下内容:

JAVA_HOME=/usr/java/jdk1.7.0_40(这里的版本号1.7.40要根据具体下载情况修改)

CLASSPATH=.:$JAVA_HOME/lib.tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOMECLASSPATH PATH

4.4source /etc/profile

4.5、验证是否安装成功:javaversion

【注意】每台机器执行相同操作,最后将java安装在相同路径下(不是必须的,但这样会使后面的配置方便很多)

5、关闭每台机器的防火墙

RedHat:

/etc/init.d/iptables stop 关闭防火墙。

chkconfig iptables off 关闭开机启动。

 

第三部分Hadoop 2.2安装过程

由于hadoop集群中每个机器上面的配置基本相同,所以我们先在namenode上面进行配置部署,然后再复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。但需要注意的是集群中64位系统和32位系统的问题。

1解压文件

将第一部分中下载的hadoop-2.2.tar.gz解压到/home/hduser路径下(或者将在64位机器上编译的结果存放在此路径下)。然后为了节省空间,可删除此压缩文件,或将其存放于其他地方进行备份。

注意:每台机器的安装路径要相同!!

2 hadoop配置过程

配置之前,需要在hadoop1本地文件系统创建以下文件夹:

~/dfs/name

~/dfs/data

~/temp

这里要涉及到的配置文件有7个:

~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh

~/hadoop-2.2.0/etc/hadoop/yarn-env.sh

~/hadoop-2.2.0/etc/hadoop/slaves

~/hadoop-2.2.0/etc/hadoop/core-site.xml

~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

以上个别文件默认不存在的,可以复制相应的template文件获得。

配置文件1hadoop-env.sh

修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk1.7.0_40

配置文件2yarn-env.sh

修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk1.7.0_40

配置文件3slaves(这个文件里面保存所有slave节点)

写入以下内容:

hadoop2

hadoop3

配置文件4core-site.xml

<configuration>

<property>

   <name>fs.defaultFS</name>

   <value>hdfs://hadoop1:9000</value>

</property>

<property>

   <name>io.file.buffer.size</name>

    <value>131072</value>

</property>

<property>

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

    <value>file:/home/hduser/tmp</value>

     <description>Abase for othertemporary directories.</description>

</property>

<property>

     <name>hadoop.proxyuser.hduser.hosts</name>

      <value>*</value>

</property>

<property>

     <name>hadoop.proxyuser.hduser.groups</name>

     <value>*</value>

</property></configuration>

配置文件5hdfs-site.xml

<configuration>

<property>

              <name>dfs.namenode.secondary.http-address</name>

               <value>hadoop1:9001</value>

        </property>

         <property>

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

                <value>file:/home/hduser/dfs/name</value>

            </property>

           <property>

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

                    <value>file:/home/hduser/dfs/data</value>

            </property>

            <property>

                    <name>dfs.replication</name>

                    <value>3</value>

             </property>

             <property>

                     <name>dfs.webhdfs.enabled</name>

                    <value>true</value>

             </property> </configuration>

配置文件6mapred-site.xml

<configuration>

<property>

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

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>hadoop1:19888</value>

</property>

</configuration>

配置文件7yarn-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>

<property>

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

<value>hadoop1:8032</value>

</property>

<property>

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

<value>hadoop1:8030</value>

</property>

<property>

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

<value>hadoop1:8031</value>

</property>

<property>

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

<value>hadoop1:8033</value>

</property>

<property>

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

<value>hadoop1:8088</value>

</property>

</configuration>

3、复制到其他节点

把如上修改的文件复制到其他两台机器上,不做修改

 

4、启动验证

4.1 启动hadoop

进入安装目录: cd ~/hadoop-2.2.0/

格式化namenode./bin/hdfsnamenode –format

启动hdfs: ./sbin/start-dfs.sh

此时在001上面运行的进程有:namenodesecondarynamenode

002003上面运行的进程有:datanode

启动yarn: ./sbin/start-yarn.sh

此时在001上面运行的进程有:namenodesecondarynamenoderesourcemanager

002003上面运行的进程有:datanodenodemanaget

查看集群状态:./bin/hdfs dfsadmin –report

查看文件块组成: ./bin/hdfsfsck / -files-blocks

查看HDFS: http://192.168.101.114:50070

 

查看RM: http://192.168.101.114:8088

 

4.2 运行示例程序:

先在hdfs上创建一个文件夹

/bin/hdfsdfs –mkdir /kk

>hdfsdfs -ls /

查看集群信息:如下图正常

hdfs dfsadmin -report

 

FAQ:

使用命令> hadoop fs -ls /

WARN util.NativeCodeLoader:Unable to load native-hadoop library for your platform... using builtin-

问题:Hadoop本地库与系统版本不一致引起的错误。

解决:

查看本地文件

Ø  file   /hadoop-2.2.0/lib/native/libhadoop.so.1.0.0

libhadoop.so.1.0.0:ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamicallylinked, not stripped

hadoop 32位的。

一.重新下载hadoop 64位版本安装。

二.可以直接用编译好的 native.tar.gz替换 /opt/hadoop/hadoop-2.2.0/lib/native

2在执行start-all.sh命令后,datanode中检查到服务已经启动,但是不久后就自动关闭。 
可能是datanodemaster通信失败造成的。 

解决:master的监听端口未开启成功,或者被master主机的防火墙阻止。尝试查看master上的监听端口这关闭防火墙以解决问题 

>serviceiptables stop

3.本地代码操作 HDFS时报错:

CallFrom ZBS9WJ52FEO4TQK/10.10.113.163 to hadoop1:9000 failed on connectionexception: java.net.ConnectException: Connectionrefused: no further information;

解决:

经过调代码发现: hdfs对象的URL属性为 hdfs://hadoop1:49002

与配置的端口不一至,应该是hdfs://hadoop1:9000,修改URL值报

Permissiondenied: user=Administrator, access=WRITE,inode="/":root:supergroup:drwxr-xr-x

写入目录权限问题:

  hadoop fs -chmod 777 /user/hadoop

然后调试,就正常了

注意:uri 指的是 core-site.xml ,一定不能同时配 fs.default.name节点。

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://hadoop1:9000</value>

</property>

 

4.使用http://hadoop1:50070查看信息。但 Browse the filesystem打不开。

点击browsethe filesystem后,网页转向的地址用的是hadoop集群的某一个datanode的主机名,由于客户端的浏览器无法解析这个主机名,因此该页无法显示。

解决:本台机器无法访问datanode节点。

C:\Windows\System32\drivers\etc\hosts

增加对应的主机名和ip。如:

hadoop2192.168.101.115

hadoop1192.168.101.116

5.hadoop运行程序是出现javaheap space 

方法1:修改hadoop环境配置文件conf/hadoop-env.sh,加入下面两行

export HADOOP_HEAPSIZE=2000 

export HADOOP_CLIENT_OPTS="-Xmx1024m $HADOOP_CLIENT_OPTS" 

方法2:以上方法是对所有程序有效,如果只针对某一个程序,可以在运行时加入参数,例如: 

bin/hadoop jar hadoop-examples-*.jar grep -D mapred.child.java.opts=-Xmx1024Minput output 'dfs[a-z.]+' 

 

 

 

你可能感兴趣的:(hadoop2.2.0安装说明)