hadoop的安装配置与测试

来源:互联网 发布:php 过滤非utf8字符 编辑:程序博客网 时间:2024/04/24 16:33

Hadoop的安装(以下操作均在root用户下)


1.配置客户机的静态IP

        要求:IP网段 | 网关 | 子网掩码

        1查看网关

               vmware==>编辑菜单==>虚拟网络编辑器==>打开窗口==>选中vmnet8虚拟网卡==>nat设置==>查看网关

        2查看可用的IP网段

              vmware==>编辑菜单==>虚拟网络编辑器==>打开窗口==>选中vmnet8虚拟网卡==>DHCP设置==>查看网段

        3挑选可用的IP

        4配置主机的静态IP

    

2.安装jdk,配置环境变量

         $>vim /etc/hosts

         JAVA_HOME

         PATH

3.解压hadoop-2.4.1.tar.gz

         tar hadoop-2.4.1.tar.gz

4.配置环境变量

         $>vim /etc/hosts

         HADOOP_HOME

         PATH

5.配置hadoop

        1.standalone | local   //独立模式

               a. 没有守护进程,所有的程序运行在同一JVM中,利于test和debug

               b.查看文件系统

               $> hadoop fs –ls /  <=>  $> hadoop fs –ls hdfs://localhost/     //查看的就是本地文件系统

       2.pseudo distributedmode   //伪分布模式

              [配置文件${HADOOP_HOME}/etc/Hadoop/*-site.xml]

 

             core-site.xml

                  <configuration>

                       <property>

                           <name>fs.defaultFS</name>

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

                       </property>

                  </configuration>

 

 

             hdfs-site.xml

                  <configuration>

                      <property>

                            <name>dfs.replication</name>

                            <value>1</value>      //设置副本数量

                     </property>

                  </configuration>

 

            mared-site.xml

                   <configuration>

                        <property>

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

                            <value>yarn</value>

                       </property>

                    </configuration>

 

              yarn-site.xml

                     <configuration>

                            <property>

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

                                 <value>localhost</value>

                           </property>

                           <property>

                                 <name>yarn.nodemanager.aux-services</name>

                                 <value>mapreduce_shuffle</value>

                           </property>

                      </configuration>

 

             [配置SSH]

                     1.安装ssh软件

                          $>sudo apt-get install ssh   //安装服务端(sshd)和客户端(ssh)以及相关软件

                     2.生成密钥对

                         $>ssh-keygen  -t  rsa -P  ‘ ’  -f ~/.ssh/id_rsa

                     3.追加公钥到对方的认证库中

                         $>cat  id_rsa.put  >> ~/.ssh/authorized_keys

                     4.测试ssh到localhost

                         $>ssh  localhost

 

              [格式化hdfs文件系统]

 

                       hdfs  namenode –format    //hadoop/bin/hdfs

 

               启动和停止hdfsyarn守护进程    //hadoop/sbin

                      启动

                           $>start-dfs.sh

                           $>start-yarn.sh

                      停止

                           $>stop-dfs.sh

                           $>stop-yarn.sh

 

                配置目录的指定方式

                    1.默认方式

                          ${HADOOP_HOME}/etc/hadoop/*.xml

                    2.通过启动参数指定配置目录

                         $>start-dfs.sh  --config${HADOOP_HOME}/etc/hadoop command //hadoop/sbin

                    3.通过设置环境变量

                         HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

 

               目录操作

                        $>hadoop fs –mkdir –p /user/${USER}   //创建目录,-p 多级目录

                        $> hadoop fs –ls/                    //显示根目录

                        $> hadoop fs –ls /user…                    //显示指定的目录

                        $> hadoop fs –ls -R/                  //递归显示目录

                        $> hadoop fs –lsr/                    //递归显示目录

               查看namenodedatanode在本地

                        $>cd${HADOOP_HOME}/tmp(该目录是自己配置的hadoop工作目录)/dfs/name/…

                        $>cd ${HADOOP_HOME}/tmp(该目录是自己配置的hadoop工作目录)/dfs/data/…

              查看log文件

                       1.$>cd ${HADOOP_HOME}/log/…

                       2.通过WebUI查看日志或者集群情况<仅本机才可访问>

                             http://localhost:50070/          //查看的是namenode节点的情况

                             http://localhost:8088/           //查看的是resourcemananger的情况,hadoop集群的信息

                             http://localhost:19888/          //看的是历史服务器的情况

 

                             $>netstat –lnpt               //查看网络端口的占用情况

 

 

 

       3.搭建完全分布式集群

                         1.安装Java

                        2.创建user

                        3.安装hadoop

                        4.配置SSH

                        5.格式化

                        6.启动进程

                             satrt-dfs.sh | start-yarn.sh

                          7.创建目录

                          8.配置hadoop

                                     1.克隆多台主机

                                     2.[配置文件${HADOOP_HOME}/etc/Hadoop/*-site.xml]

                                     core-site.xml

                                            <configuration>

                                                  <property>

                                                      <name>fs.defaultFS</name>

                                                      <value>hdfs://hadoop-server-00【主机名】:9000</value>

                                                  </property>

                                                  <property>(可选)

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

                                                      <value>/usr/local/apps/hadoop-2.4.1/tmp/</value>  //配置hadoop的工作目录(可以自己设置)

                                                  </property>

                                           </configuration>

 

                                  hdfs-site.xml

                                            <configuration>

                                                 <property>

                                                       <name>dfs.replication</name>

                                                       <value>1</value>       //设置副本数量

                                                </property>

                                             </configuration>

 

                                  mared-site.xml

                                             <configuration>

                                                  <property>

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

                                                     <value>yarn</value>

                                                  </property>

                                              </configuration>

 

                                yarn-site.xml

                                             <configuration>

                                                  <property>

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

                                                       <value> hadoop-server-00【主机名】</value>

                                                 </property>

                                                 <property>

                                                       <name>yarn.nodemanager.aux-services</name>

                                                       <value>mapreduce_shuffle</value>

                                                </property>

                                             </configuration>

 

                                        slaves

                                                    hadoop-server-00

                                                    hadoop-server-01

                                                    hadoop-server-02

                                       3.配置主机名然后进行远程拷贝

                                               1.$>vim /etc/hosts

                                                   添加如下配置:

                                                       主机名                      主机IP

                                                    (自己设置)          (与该主机IP一致)

                                                      hadoop-server-00  192.168.196.10

                                                      hadoop-server-01  192.168.196.11

                                                      hadoop-server-02  192.168.196.12

                                       2.远程复制/etc/hosts/到远程主机

                                                $>scp  hosts root@hadoop-server-01(02):/etc/

                                       4.通过scp进行远程复制

                                                $>scp –r ${HADOOP_HOME}/etc/hadoop root@hadoop-server-01(02):${HADOOP_HOME}/etc/

                                       5.编写脚本,实现文件或者文件夹在所有节点的远程复制。

                                       6.修改默认的hadoop临时目录

                                          core-site.xml

                                              添加

                                                  <property>

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

                                                       <value>/usr/local/apps/hadoop-2.4.1/tmp/</value>  //路径可自由设置

                                                  </property>

                                       7.修改blocksize大小,默认是128M

                                          dfs-site.xml

                                              添加

                                                  <property>

                                                      <name>dfs.blocksize</name>

                                                      <value>64m</value> //大小可自由设置

                                                  </property>

 

                                         测试是否设置正确:

                                                  1.$>hadoop fs –put 文件(>64m)

                                                   2.通过WebUI查看块大小

                       

6.配置CentOS的文本启动模式

                      1.$>vim /etc/inittab

                              id:5:initdefault: => id:3:initdefault:          

                      2.重启

                              $>reboot     

                      3.在文本模式下,启动图形界面

                              $>startx

                      4.在图形界面下,进入文本模式

                             Ctrl+Alt+Fn(n=1~12)

7.查看所有端口

                     $>netstat –ano | more

                      常用端口

                          1.NameNode

                                  RPC     //8020

                                  WebUI    //50070

                          2.DataNode

                                  RPC     //8032

                                  WebUI    //50075

                          3.SecondaryNameNode

                                  WebUI    //50090

                          4.HistoryServer

                                  WebUI    //19888

                          5.ResourceManager

                                  WebUI    //8088

                          6.NodeManager

                                   WebUI    //8042

       

8.安全模式

                        1.namenode启动时,合并image和edit成新的image,并产生新的edit log

                        2.整个过程处于safe模式下,客户端只能读取

                        3.namenode安全模式操作

                               $>hdfs dfsadmin –safemode get   //查看

                               $>hdfs dfsadmin –safemode enter  //进入

                               $>hdfs dfsadmin –safemode leave //离开

                        4.手动保存名字空间

                               $>hdfs dfsadmin –saveNamespace

                        5.手动保存镜像文件

                               $>hdfs dfsadmin –fetchImage

                        6.保存元数据,保存在${HADOOP_HOME}/logs/

                               $>hdfs dfsadmin –metasave  xxx.metadata

                        7.start-balancer.sh

                               启动均衡器,让集群在数据存储上更加平均,提高整个集群的效率

9.hadoop文件操作系统,目录默认不能创建快照

                       1.开启快照功能,hdfsdfsadmin

                               $>hdfs dfsadmin –allowSnapshot ${HADOOP_HOME}/tmp/data

                       2.快照,snapshot,针对目录

                              $>hadoop fs –createSnapshot ${HADOOP_HOME}/tmp/data snap-1

 

10.回收站

                     1.默认时0秒,意味着禁用回收站

                     2.设置文件在回收站的驻留时间

                          core-site.xml

                               fs.trash.interval=1     //分钟数计算

                     3.通过shell命令删除的文件,会进入Trash

                     4.每个用户都有自己的回收站(目录)

                               $>hadoop fs –ls /

                     5.编程方式删除的文件不进入回收站,立即删除,若希望通过编程方式删除的文件叶经过回收站,可以调用:
                              moveToTrash()方法,其返回值(false:说明禁用了回收站或者已经在回收站中)


 11.配额

                    1.目录配额

                          $>hdfs dfsadmin –setQuota N /dir    //N>0,目录配额,1:表示空目录,不能放置任何元素

                    2.空间配额

                          $>hdfs dfsadmin –setSpaceQuota N /dir

                    3.查看fsimage镜像文件

                          $>hdfs oiv –i xxxImage –o xxx.xml –p XML

                    4.查看edit_xxx编辑日志文件

                          $>hdfs oev –i edit_xxx –o xxx.xml –p XML

                    5.hadoop fs命令==hdfs dfs命令

12.执行

                    1.打开MyEclipse,创建项目

                    2.导入hadoop所有jar包

                    3.编写代码

                               import java.io.ByteArrayOutputStream;

                               import java.io.InputStream;

                               import java.net.URL;

 

                               importorg.apache.hadoop.fs.FsUrlStreamHandlerFactory;

 

                               publicclass Test {

                                       static{

                                                     URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

                                                   }

                               publicstatic void main(String[] args)throws Exception {

                                       String urlStr="hdfs://hadoop-server-00:9000/zdx01.txt";

                                       URL url=new URL(urlStr);

                                       InputStream is=url.openStream();

                                       ByteArrayOutputStream baos=new ByteArrayOutputStream();

             

                                       byte[] buf=newbyte[1024];

                                       int len=0;

                                       while((len=is.read(buf))!=-1){

                                       baos.write(buf,0,len);

                                         }

                                       byte[] data=baos.toByteArray();

                                       System.out.println(new String(data));

                                         }

      

                                       }

                         4.添加log4j.properties

                                 [src/log4j.properties]  

                                  //寻找位置:${HADOOP_HOME}/etc/hadoop/log4j.properties

 

13.HA

                        1.high availability,高可用性。

                                  持续服务的能力

                                  多台主机之间进行集群配置

                       2.failover,容灾

                       3.secondarynamenode(解决的可靠性问题)

                       4.single point of failure(SPOF),单点故障

                       5.NFS(Network file System),共享存储设备EMC,QJM

                       6.HA架构

                               1.两台主机,一台active(复制客户端所有操作),另一台standby(维护足够多的状态,随时提供融在服务)

                               2.Journal时单独的进程,用于active和standby之间的同步信息

                               3.active的namespace修改动作写入到JNs,standby从JNs读取edit,需要持续观察log的变化,一旦log发生变化,standby就会同步到自己的namespace。

                               4.datanode同时向两台namenode发送块列表信息以及心跳信息

                               5.同一时刻只能有一个active的namenode,

 

14.部署HA

                    [hdfs-site.xml]

                          1.配置名称服务:dfs.nameservices(名称服务的逻辑名)

                              <property>

                                   <name> dfs.nameservices </name>

                                   <value>mycluster</value>

                             </property>

 

                         2.配置nameservice中每个namenode

                               dfs.ha.namenodes.[nameserviceID]

                                 <property>

                                     <name> dfs.ha.namenodes.mycluster</name>

                                     <value>nn1,nn2</value>

                                 </property>

                                注意:目前最新版本的hadoop最多只能支持2个namenode。

                        3.配置每个namenode的rpc地址

                                <property>

                                       <name> dfs. namenode.rpc-address.mycluster.nn1</name>

                                       <value>hadoop-server-00:9000</value>

                               </property>

                               <property>

                                       <name> dfs.namenode.rpc-address.mycluster .nn1 </name>

                                       <value> hadoop-server-04:9000</value>

                               </property>

                       4.配置每个namenode的WEBUI地址

                                <property>

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

                                       <value>hadoop-server-00:50070</value>

                               </property>

                               <property>

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

                                       <value> hadoop-server-04:50070</value>

                               </property>

 

                       5.配置每个namenode的共享edit log目录

                                <property>

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

                                        <value>qjournal://hadoop-server-00:8485;hadoop-server-04:8485/mycluster</value>

                                </property>

 

                       6.配置客户端容灾代理供应商类

                               <property>

                                     <name> dfs.client.failover.proxy.provider.mycluster</name>

                                     <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

                               </property>

                        7.(可选)配置HA防护方法名集合

                                  QJM防止脑裂的发生,不存在两个activenode。

                                  可以配置sshfence或者shell脚本

                        8.配置hdfs的文件系统

                               [core-site.xml]

                                   <property>

                                          <name> dfs.defaultFS</name>

                                          <value>hdfs://mycluster/</value>

                                   </property>

                        9.配置JN的本地存放数据(editlog)的目录

                                    <property>

                                         <name> dfs.journalnode.edits.dir</name>

                                         <value>/home/zdx/hadoop/journal</value>

                                   </property>

                        10.部署过程

                                1.在JN节点上启动jn进程

                                        $>hadoop-daemon.sh startjournalnode

                                2.启动完成JN之后,需要在disk上完成两个namenode的元数据同步工作

                                       a.如果正在构建的hdfs集群,需要在一台namenode之上进行format工作

                                       b.若已经格式化文件系统或者non-ha集群之上启用ha功能,需要复制现有的namenode的目录(~/hadoop/dfs/name)到另一台namenode的相同目录之                                        下。然后在未格式化的namenode上执行命令:hdfsnamenode –bootstrapStandby,该命令保证了jn有足够多的edit来启动两个namenode

                                       c.如果正在将non-ha的namenode转换成ha,执行命令hdfsnamenode –initializeShareEdits,该命令会从本地的namenode编辑日志目录数据初始化到                                            jns中,

                                      d.启动两个namenode

                                      e.通过WBUI查看每个namenode的状态

                                               http://hadoop-server-00:50070

                                               http://hadoop-server-04:50070

 

15.distcp实现hadoop集群中的文件复制

                  同一集群

                      $>hadoop distcp  [源目录] [目标目录]

                  不同集群

                      $>hadoop distcp hdfs://主机名:9000/源目录 hdfs://主机名:9000/目标目录

16.归档

                     1.在java中:jar

                     2.在hadoop中:har

                              $>archive -archiveName NAME.har -p  <src>*  <dest>

                     3.查看归档之后的文件目录

                              $>hadoop fs –lsr har:/// <dest>/NAME.har

17.压缩
原创粉丝点击