hadoop2.72集群搭建(亲自实验,技术内容部分转自他人博客)

来源:互联网 发布:整型数据占几个字节 编辑:程序博客网 时间:2024/04/30 20:54

Hadoop2.7.2集群安装

1、  准备环境

Centos 6.6

Jdk-6u45-linux-x64.bin

Hadoop-2.7.2

(1)、三个可以上网的centos系统;master :额外的内存资源;slave :需要额外的磁盘空间。

 

(一、)网络部分: cd  etc/syeconfig/network-scripts 

                      Vim ifcfg-eth0

                      将BOORPROTO 改为静态:static;

                      添加ip地址:IPADDR;NETMASK;GATEWAY;DNS;

                保存退出  :wq

                      重启网络服务:/etc/init.d/networkrestart;

 

(二、)搭建java环境:jdk-6u45

                                 安装java:先在虚拟机下设置共享文件夹,进入centos系统:在mnt/hgfs/ 下找到共享文件夹,将软件复制到 usr/local/src/下 

                                    直接运行java   ./  jdk……

                                     配置java环境变量:

                                                        输入vi/etc/profile

                                                       

                                                        ExportJAVA_HOME=/usr/local/src/jdk1.6.0_45

                                                        ExportCLASSPATH=:$CLASSPATH:$JAVA_HOME/lib

                                                        ExportPATH=$PATH:$JAVA_HOME/bin

                                    

                                                        保存退出;

                                                        输入source/etc/profile   //执行新变量

                                                        Echo$PATH 查看path环境变量;

                            远程拷贝到slave1 slave2中

Cd /usr/local/src             

Scp –rp jdk1.6…. 192.168.85.12: /usr/local/src/

         (三、)配置host文件

                            修改host文件

                            Vim/etc/hosts

                            添加:ip地址  主机名

                            远程拷贝到slave1 slave2中

         (四、)SSH无密码登录

                    进入.ssh目录:Cd/root/.ssh

                    生产公钥和私钥(四个回车):ssh-keygen

执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

使用命令 ssh-copy-id 192.168.85.12  ssh-copy-id192.168.85.20

这时会在192.168.8.12主机的.ssh/下产生一个名为authorized_keys的文件,这时通过 ssh 192.168.85.12时可以直接免登陆进入主机 

          (五、)创建hadoop用户

                   [root@promote~]# groupadd Hadoop         //创建用户组 

[root@promote ~]# useradd -g hadoop Hadoop     //创建用户名

[root@promote~]# passwd Hadoop                         //修改用户密码

 

将用户hadoop加到sudo列表

查看/etc/sudoers的权限

ls -l /etc/sudoers

修改文件权限

chmod 777 /etc/sudoers

将hadoop添加root权限

Vim /etc/sudoers

还原权限

Chmod  440 /etc/sudoers

                   sudoers文件拷贝到其他主机中

          (六、)安装Hadoop2.7.2

http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz 

下载hadoop安装包;

Wget  http://........tar.gz

tar zxvf Hadoop-2.7.2.tar.gz

 

2、  配置文件(hadoop)

a)        配置hadoop环境变量

Vim /etc/profile  

在末尾添加:

export JAVA_HOME=/usr/local/src/jdk1.6.0_45

export HADOOP_HOME=/usr/local/src/hadoop-2.7.2

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

export PATH="$JAVA_HOME/:$HADOOP_HOME/bin:$PATH"

b)        配置hadoop相关文件

提前建立几个目录

cd /usr/local/src/hadoop-2.7.2/etc/hadoop/

mkdir tmp

mkdir dfs/name

mkdir dfs/data

 

 

 

 

 

1、  core-site.xml 

cd /usr/local/src/Hadoop-2.7.2/etc/Hadoop

vim core-site.xml

输入:

<configuration>

       <property>

               <name>fs.defaultFS</name>

               <value>hdfs://192.168.85.10:9000</value>

       </property>

        <property>

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

               <value>/usr/local/src/hadoop-2.7.2/etc/hadoop/tmp </value>

       </property>

        <property>

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

               <value>131072</value>

       </property>

</configuration>

//注释:(1fs.defaultFS 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。

(2hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中Hadoop的默认临时路径,这个最好配置,然后在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令了。

2hdfs-site.xml

Vim hdfs-site.xml

<property>

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

               <value>192.168.85.10:50070</value>

       </property>

        <property>

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

               <value>192.168.85.12:50090</value>

       </property>

        <property>

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

               <value>file:/usr/local/src/hadoop-2.7.2/name</value>

       </property>

       <property>

               <name>dfs.replication</name>

               <value>3</value>

       </property>

        <property>

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

               <value>file:/usr/local/src/hadoop-2.7.2/data</value>

       </property>

2、  配置mapred-site.xml

<property>

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

                <value>yarn</value>

        </property>

        <property>

                <name>mapreduce.jobhistory.adress</name>

               <value>192.168.85.10:10020</value>

        </property>

        <property>

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

               <value>192.168.85.10:19888</value>

       </property>

3、  配置yarn-site.xml

<!-- 设置resourcemanager 在哪个节点-->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>master</value>

</property>

 

<!--reducer取数据的方式是mapreduce_shuffle -->

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

4、  配置hadoop-env.sh

在# The javaimplementation to use后添加或修改.

export JAVA_HOME=/usr/local/src/jdk1.8.0_141

5、  将hadoop文件夹复制到slave1,slave2 的

Scp -rp Hadoop-2.7.2 92.168.8.12/:/usr/local/src

 

 

 

(七、)启动

第一次启动得格式化

./bin/hdfs namenode-format

启动dfs

./sbin/start-dfs.sh

启动yarn

./sbin/start-yarn.sh   

 

//执行上述命令时遇到警报

配置完Hadoop启动的时候出现如下警告信息:

[html] view plain copy

1.  WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable  

问题在哪里?有人说这是hadoop的预编译包是32bit的,运行在64bit上就会有问题。但是这个答案大多数时候都是错的。

如何验证64bit还是32bit?

进入hadoop安装目录

[plain] view plain copy

1.  /usr/local/hadoop-2.5.2/lib/native  

ldd命令查看依赖库

[plain] view plain copy

1.  ldd libhadoop.so.1.0.0  

会输出如下信息:

[plain] view plain copy

1.  ./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)  

2.         linux-vdso.so.1 =>  (0x00007fff369ff000)  

3.          libdl.so.2 => /lib64/libdl.so.2 (0x00007f3caa7ea000)  

4.         libc.so.6 => /lib64/libc.so.6 (0x00007f3caa455000)  

5.          /lib64/ld-linux-x86-64.so.2 (0x00007f3caac1b000)  

可以看到依赖的都是/lib64/的动态库,所以不是64/32位问题。但是看到报错,GLIBC_2.14找不到,现在检查系统的glibc,  ldd --version即可检查。
输入命令:

[plain] view plain copy

1.  ldd --version  

会输出如下信息:

[plain] view plain copy

1.  ldd (GNU libc) 2.12  

2. Copyright (C) 2010 Free Software Foundation, Inc.  

3.  This is free software; see the source for copying conditions.  There is NO  

4. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

5.  Written by Roland McGrath and Ulrich Drepper.  

原来系统预装的glibc库是2.12版本,而hadoop期望是2.14版本,所以打印警告信息。

现在有两个办法,重新编译glibc.2.14版本,安装后专门给hadoop使用,这个有点危险。

第二个办法直接在log4j日志中去除告警信息。在//usr/local/hadoop-2.5.2/etc/hadoop/log4j.properties文件中添加

[plain] view plain copy

1.  log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR  

 

原创粉丝点击