Hadoop学习--完全分布式部署(pdsh/include&exclude/安全模式/均衡器/快照/回收站)--day02

  1. 安装准备工作

    准备5台服务器,hadoop01部署namenode resourcemanager,hadoop02-hadoop03是datanode,hadoop04部署secondarynamenode

   上传hadoop-2.7.3.tar.gz  /soft

   虚拟机Java安装完毕

        卸载原有的openjdk的版本

        # java -version如果看到有openjdk的字样就是说明是系统带的openjdk版本

        # rpm -qa|grep jdk

        用类似如下的方法删除上面的rpm包

           #rpm -e --nodeps   java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

        检查是否还有jdk1.5的版本,有就删除

        #rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64

        #解压新下载的jdk的安装包

        配置环境变量

2.解压hadoop

   $tar -xzvf hadoop-2.7.3.tar.gz

3.配置环境变量

   编辑/etc/profile,添加如下内容

   export JAVA_HOME=/soft/jdk1.8.0_111

   export HADOOP_HOME=/soft/hadoop-2.7.3

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

   并且把以上的内容写到/home/hadoop/.bashrc中

4.配置SSH免密码登陆

   $ssh-keygen -t rsa (四个回车)

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

   将公钥拷贝到要免登陆的机器上

   $cd /home/hadoop/.ssh

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

   $chmod 600 authorized_keys  

   

   mkdir ./ssh

   chmod 700 ~/.ssh cd ~/.ssh

   ssh-keygen -t rsa 

   cd ~/.ssh

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

   chmod 600 ~/.ssh/authorized_keys

   scp authorized_keys userB:/root/.ssh/

   注:A 为管理主机,B为被管理主机。

5.安装pdsh工具

  #tar -jxvf pdsh-2.29.tar.bz2

  #cd pdsh-2.29

  #./configure --with-ssh --with-rsh --with-mrsh --with-mqshell \

--with-qshell  --with-dshgroups --with-machines=/etc/pdsh/machines

  #make

  #make install

  查看pdsh的版本号已经可使用的模块信息

  $pdsh -v

  查看pdsh显示当前所有加载的模块信息

  $pdsh -L

  命令查看user001,user002,user003主机上的时间,通过SSH

  $pdsh -w ssh:user00[1-3] "date"

  -g参数制定主机组,此参数用来指定一组远程主机,在编译pdsh时可以通过

  “--with-dshgroups”参数来激活此选项,默认可以将一组主机列表写入一个

  文件中并放到本地主机的~/.dsh/group或/etc/dsh/group目录下,这样就可

  以通过“-g”参数调用了。

  $pdsh -R ssh -g userhosts "date" 

  其中“userhosts”是一个主机列表文件,可以将此文件放在~/.dsh/group或

  /etc/dsh/group目录下

  $pdcp -R ssh -w vm[2-5] -r ~/mpi  ~/

  $pdcp -R ssh -g hostname -r ~/mpi  ~/

6.本地eclipse环境设置

  (1).首先解压hadoop-2.7.3.tar.gz ,创建_libs/_source/_test-source/_test-libs这四个文件夹

  (2).进入hadoop-2.7.3目录中,搜索jar包文件,先把搜索到的jar包文件全部复制到_libs文件夹下

  (3).进入_libs文件夹下,搜索带source文件名的包,搜索到后剪切全部放入_source文件夹下

  (4).从_sources文件夹中搜索test-source的jar包,搜索到后剪切全部放入_test-source文件夹下

  (5).注意上述四个文件夹要放在同一级的目录下

  (6).最后在_libs文件夹中搜索test的jar包,剪切后放入到新建的_test-libs包下

  (7).打开eclipse,新建一个项目,配置buildpath目录

  (8).添加外部的jar包,找到_libs文件夹中所有的jar包,添加

  (9).对于的源码信息要关联时,点击Attach Source到_source文件夹中对应的包

7.注意配置文件的内容对于jar包的位置

  (1).core-default.xml

      ...\_libs\hadoop-common-2.7.2.jar

  (2).hdfs-default.xml

      ...\_libs\hadoop-hdfs.2.7.2.jar

  (3).mapred-default.xml

      ...\_libs\hadoop-yarn-common-2.7.2.jar

  (4).yarn-default.xml

      ...\_libs\hadoop-yarn-common-2.7.2.jar

  (5).注意copy上面所有的内容到_conf文件夹中新建对于的同名的文件中

      以便查找配置项进行配置

8.配置辅助名称节点

   从_conf文件中查找.xml文件结尾的内容中secondary字样,找到配置辅助名称节点的内容项

   在_conf\hdfs-default.xml中,发现有dfs.namenode.secondary.http-address这个key字样

   修改hdfs-site.xml文件内容,增加如下内容

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

   <value>hadoop05:50090</value>

   <description>

   The secondary namenode http server address and port.

   </description>     

9.配置hadoop临时目录的参数

   从_conf文件中查找.xml文件结尾的内容中local和hadoop.tmp.dir字样,找到配置项内容的位置

   在_conf\core-default.xml中,发现有<name>hadoop.tmp.dir</name>的字段

   修改core-site.xml,添加如下的内容(具体目录可以自己定义,这里暂时没有改变)

   <property>

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

   <value>/tmp/hadoop-${user.name}</value>

   <description>A base for other temporary directories.</description>

   </property>

10.配置namenode的数据存放目录

   同理在_conf\hdfs-default.xml中找到dfs.namenode.name.dir

   修改hdfs-site.xml文件内容,增加如下内容

   <property>

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

   <value>file://${hadoop.tmp.dir}/dfs/name</value>

   <description>Determines where on the local filesystem the DFS name node

      should store the name table(fsp_w_picpath).  If this is a comma-delimited list

      of directories then the name table is replicated in all of the

      directories, for redundancy. </description>

   </property>

11.同理配置datanode的数据存放目录

   修改hdfs-site.xml文件内容,增加如下内容

   <property>

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

   <value>file://${hadoop.tmp.dir}/dfs/data</value>

   </property>

12.同理配置secondarynamenode的数据目录

   修改hdfs-site.xml文件内容,增加如下内容

   <property>

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

   <value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>

   </property>   

13.修改默认块大小

   修改hdfs-site.xml文件内容,增加如下内容

   <property>

   <name>dfs.blocksize</name>

   <value>134217728</value>

   </property>

14.修改core-site.xml,添加如下信息

   <configuration>

   <property>

   <name>fs.defaultFS</name>

   <value>hdfs://hadoop01/</value>

   </property>

   </configuration>

15.修改hdfs-site.xml

   <property>

   <name>dfs.replication</name>

   <value>3</value>

   </property>  

16.修改mapred-site.xml

   <property>

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

   <value>yarn</value>

   </property>

17.修改yarn-site.xml

   <property>

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

   <value>hadoop01</value>

   </property>

   <!-- reducer获取数据的方式 -->

   <property>

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

   <value>mapreduce_shuffle</value>

   </property>

18.修改slaves

    hadoop02

    hadoop03

    hadoop04

19.命令手动启动namenode和datanode,其实hadoop-daemons.sh脚本是用到了hadoop-daemon.sh的脚本

   该命令只能在namenode的机器上执行

   $hadoop-daemon.sh start namenode  //启动namenode进程

   $hadoop-daemon.sh stop  namenode  //关闭namenode进程

   

   $hadoop-daemon.sh start datanode  //在datanode节点上启动该节点上的datanode进程

   $hadoop-daemon.sh stop datanode

   $hadoop-daemons.sh start datanode  //可以在任何namenode/datanode/secondarynamenode上执行

   $hadoop-daemons.sh stop datanode

   $hadoop-daemon.sh start secondarynamenode  //只能在secondarynamenode上执行启动进程

   

   和该命令类似的有yarn-daemons.sh 和yarn-daemon.sh

20.查看节点信息位置

   $hdfs getconf -namenodes  //查看集群中namenode是哪台机器

   $hdfs getconf -secondarynamenodes //查看集群中secondarynamenode是哪台机器

   

21.端口信息

   HDFS中配置的namenode

      rpc              //8020

      webui            //50070

   datanode

      rpc              //8032

      webui            //50075

   secondarynamenode   

      webui            //50090

   historyServer 

      webui            //19888

   resourcemanager

      webui            //8088

   nodemanager

      webui            //8042

   linux系统中可用netstat -tuanlp这个命令来查看所有的内部端口、外部端口连接、

      TCP/UDP的所有信息

22.修改日志存放路径

   默认是在tar包目录下面的log文件夹

   修改tar包etc配置文件下的hadoop-env.sh文件夹

   添加:

        export HADOOP_LOG_DIR=/var/log/hadoop

   查看分析日志首先看的是.log文件, .out文件默认保留5个,会自动滚动覆盖

23.四大模块对于的配置文件

   (1).common

        hadoop-common-xxx.jar

        core-site.xml

        core-default.xml

   (2).hdfs

        hdfs-site.xml

        hdfs-default.xml

   (3).mapreduce

        mapred-site.xml

        mapred-default.xml

   (4).yarn      

        yarn-site.xml

        yarn-default.xml

24.Namenode和Datanode数据存放位置的说明

   (1).Namenode的数据存放位置配置

      在hdfs-default.xml中有如下参数可以修改,可以制定多个目录,这样就会在本机存在

        多个目录存放的一样的namenode的镜像文件数据,一定程度上保证了数据的安全性,并行写

      <property>

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

      <value>file://${hadoop.tmp.dir}/dfs/name</value>

      <description>Determines where on the local filesystem the DFS name node

      should store the name table(fsp_w_picpath).  If this is a comma-delimited list

      of directories then the name table is replicated in all of the

      directories, for redundancy. </description>

      </property>

      名称配置多个目录在于更可靠;

      每个目录存放的内容都是相同的.

   (2).Datanode的数据存放位置配置

       数据节点配置多个目录,不是副本;

       每个目录存放的内容不同,用","号分割

       在hdfs-default.xml中有如下参数可以修改

       <property>

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

       <value>file://${hadoop.tmp.dir}/dfs/data</value>

       <description>Determines where on the local filesystem an DFS data node

       should store its blocks.  If this is a comma-delimited

       list of directories, then data will be stored in all named

       directories, typically on different devices. The directories should be tagged

       with corresponding storage types ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for HDFS

       storage policies. The default storage type will be DISK if the directory does

       not have a storage type tagged explicitly. Directories that do not exist will

       be created if local filesystem permission allows.

       </description>

       </property>

   (3).secondarynamenode数据存放位置

      可以存放多个目录,存放的效果和存放namenode数据的多个目录都是一样的

      <property>

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

      <value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>

      <description>Determines where on the local filesystem the DFS secondary

          name node should store the temporary p_w_picpaths to merge.

          If this is a comma-delimited list of directories then the p_w_picpath is

          replicated in all of the directories for redundancy.

      </description>

      </property>

25.Commission|Decommission服役和退役节点的配置以及节点refreshNodes

   三个配置文件的关系:

       salves文件规定的主机是启动的时候允许启动相应的datanode进行,但是不能保证是否

       能够连接到namenode上。

       真正保证能够连接到namenode上的配置文件是在hdfs-defaults.xml中的dfs.hosts这个参数值决定的,

       这个值指向的是一个文件,文件中记录了哪些主机允许连接到namenode上,如果为空,所有的机器都是

       被允许的。

       在hdfs-defaults.xml中有个dfs.hosts.exclude参数,这个参数上配置的文件决定了排除哪些机器连接到

       namenode的,也就是不允许连接到namenode上面的机器列表。

       当include文件和exclude文件同时存在的时候:

       include   exclude    描述

       no        no         数据节点无法连接到名称节点

       no        yes        数据节点无法连接到名称节点

       yes       no         数据节点可以连接到名称节点

       yes       yes        数据节点可以连接到名称节点,但会退役

       

   测试:

   编辑配置文件

      [hdfs-site.xml]

      dfs.hosts=/soft/hadoop/etc/dfs-hosts-include.conf

      dfs.hosts.exclude=/soft/hadoop/etc/dfs-hosts-exclude.conf

   分发hdfs-site.xml文件到所有的节点

   刷新节点,在namenode上面执行

      $hdfs  dfsadmin  -refreshNodes   

26.查看VERSION数据

   clusterID=xxx (namenode==datanode)

   storageID=xxx (datanode)

   cTime:集群创建时间 

   acl:访问控制列表 

   layoutVersion:是一个负整数,描述HDFS的永久性的数据结构(布局)版本

   namespaceID:是文件系统的唯一的标识符,是文件系统首次格式化时设置的,任何datanode在注册到namenode之前

               都不知道namepaceID值,因此namenode可以使用该属性鉴别新建的datanode

27.安全模式

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

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

   (3).namenode安全模式操作

       $hdfs dfsadmin -safemode get //查看是什么状态

       $hdfs dfsadmin -safemode enter //进入

       $hdfs dfsadmin -safemode leave //离开

       $hdfs dfsadmin -safemode wait  //等待

   (4).执行saveNamespace命令使得p_w_picpath文件和edit立即进行合并,生成新的p_w_picpath文件和edit日志,但是2nn还是老的

28.手动保存镜像文件

   $hdfs dfsadmin -fetchImage ~/  //保存镜像至当前home目录下

   可以在任何节点机器上执行,不要在安全模式下,相当于拷贝最新的p_w_picpath镜像,就是namenode上最新的p_w_picpath文件

29.手动保存元数据

   $hdfs dfsadmin -metasave  xxx.meta

   可以在任何节点上面执行上面的命令,但是数据保存在namenode的log文件下

   默认存放在{HADOOP_HOME}/logs/

30.文件系统健康检查

   $hdfs fsck /

   查找HDFS某个文件的大小,块的信息,所在节点的信息

   $hdfs fsck /user/hadoop/xxxx.files   -files  -blocks -racks

   webui查看数据节点上块的信息:http://hadoop02:50075/blockScannerReport

31.启动均衡器

   $start-balancer.sh

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

32.HDFS命令

   从本地上传文件并删除本地的文件

   $hadoop fs -moveFromLocal  hello.txt /usr/ubuntu/data/   

   删除HDFS上面的文件

   $hadoop fs -rm -R /usr/ubuntu/data/had*

   查看hdfs上面文件的内容

   $hadoop fs -cat /user/ubuntu/data/had*

   查看目录的统计信息,统计目录数量/文件数/字节数

   $hadoop fs -count /x/x/x/

   追加HDFS上面的文件内容

   $hadoop fs -appendToFile name.txt /user/ubuntu/data/hello.txt

33.快照

   首先开启快照

   $hdfs dfsadmin -allowSnapshot /user/ubuntu/data

   针对目录进行snapshot,存放的快照文件在做快照目录下面的.隐藏文件

   $hadoop fs -createSnapshot /user/ubuntu/data snapshot-1

   关闭快照属性

   $hdfs dfsadmin -disallowSnapshot /usr/ubuntu/data

34.回收站

  (1).默认是0秒,意味着禁用回收站

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

    [core-site.xml]

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

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

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

    $/usr/ubuntu/.Trash

  (5).编程方式删除不进入回收站,立即删除,可以调用

     moveToTrash()方法,返回false,说明禁用回收站或者已经在站中

  (6).恢复文件

     将.Trash目录的文件移动出来即可

     hadoop fs -mv /user/ubuntu/.Trash/xx/xx/xx  data/

  (7).清空回收站

     hadoop fs -expunge

  (8).测试删除回收站

     hadoop fs -rm -R /user/ubuntu/.Trash

35.目录配合和磁盘空间配额

   $hdfs dfsadmin -setQuota 2 /user/ubuntu/data/day   //指该目录下可以存在的文件数或目录的数量

   $hdfs dfsadmin -setSpaceQuota 20 /user/ubuntu/data/day  //配置目录的磁盘空间配额为20字节

   

         


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章