hadoop常用命令汇总

命令汇总

网络配置:

hostname          查看主机名

vi   /etc/sysconfig/network    设置主机名

ifconfig                       查看ip情况

 

vi  /etc/sysconfig/network-scripts/ifcfg-eth0    设置网络

    DEVICE=“eth0”       接口名(设备,网卡)

BOOTPROTO=STATIC    IP的配置方法(static:固定IP,dhcpHCP,none:手动)

ONBOOT=yes             系统启动的时候网络接口是否有效(yes/no)

IPADDR=192.168.1.2       IP网址

GETEWAY=192.168.1.0      网关

DNS1=202.113.112.55      DNS服务器

 

service  network   restart    重启网卡服务

service  network   start      开始网卡服务

service  network   stop       停止网卡服务

 

ifconfig  eth0  up|down       关闭和启用指定的网卡

 

ifconfig                   查看配置的ip信息是否生效

 

 

vi   /etc/ hosts               设置主机名和ip的映射关系

      192.168.1.2    master

      192.168.1.3    slave1

      192.168.1.4    slave2

 

ping   master

 

service   iptables  stop    关闭防火墙

chkconfig  iptables  off    关闭自启动服务

 

 

配置SSH

rpm  -qa  | grep openssh     查看是否安装了ssh服务

rpm  -qa  | grep rsync       查看是否安装了rsync服务

 

yum  install ssh        安装ssh协议

yum  install rsync      rshnc是一个远程数据同步工具

 

service   sshd   restart     启动sshd服务

 

ssh-keygen  -t rsa  -P ‘’  生成无密码密钥对(存放路径是

/home/Hadoop/.ssh

 

cat  ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys    将id_rsa.pub追加

到授权的Key中

 

chmod   600   ~/.ssh/authorized_keys              授予读写的权限

 

vi   /etc/ssh/sshd_config                   修改sshd服务的配置文件

       RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

service   sshd   restart  重启sshd服务,使修改生效

 

ssh   master      验证ssh登录(第一次会要求输入一次密码)

 

 

单点对多点的SSH无密码登录

ssh-keygen

ssh-copy-id  storm@slave1      格式是“ssh-copy-id  用户名@主机名”

ssh-copy-id  storm@slave2            将本机的公钥复制到远程机器的

authorized_keys文件中

 

 

多点对多点的ssh无密码登录

     操作起来比较复杂,建议使用脚本语言实现。

     每个机器上生成自己的公钥和私钥,并把自己的公钥追加到

authorized_keys文件

 

 

 

安装JDK

root用户登录

mkdir   /usr/java                  创建/usr/java目录

cp /root/Downloads/jdk-6u31-linux-i584.bin  /usr/java   复制

chmod  +x   jdk-6u31-linux-i584.bin     赋予执行的权限

./jdk-6u31-linux-i584.bin             解压过bin文件

rm  -rf   jdk-6u31-linux-i584.bin      删除jdk安装文件

 

vim   /etc/profile

 

在尾部添加如下内容:  

# set java environment

exportJAVA_HOME=/usr/java/jdk1.6.0_31/

exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

 

source  /etc/profile     使profile的配置文件生效

 

java –version          验证jdk是否安装成功

 

安装剩余机器:

 scp  /usr/java/jdk1.6.0_31/   Hadoop@master: /usr/java/

 

使用shell脚本安装:

for  i in  $(seq 1  100);

   do  echo   slave$i;

   scp  /usr/java/jdk1.6.0_31/   Hadoop@slave$i: /usr/java/;  

    done

 

profile环境变量的配置文件也可以配置好后一次发送所有集群中。

 

 

 

 

Hadoop集群的安装

以root用户登录

cp  /root/Downloads/Hadoop-1.0.0.tar.gz   /usr

cd   /usr

tar   -zxvf  Hadoop-1.0.0.tar.gz       解压tar.gz的安装包

mv  Hadoop-1.0.0   hadoop              文件夹重命名

chown   -R    Hadoop:Hadoop Hadoop    hadoo文件的属主重新分配,-R是递归,hadoop文件夹分配给hadoop组下的hadoop用户

 

rm –rf   Hadoop-1.0.0.tar.gz     删除安装文件(-r是递归,-f是强制)

 

配置hadoop的环境变量

vi   /etc/profile

     export   HADOOP_HOME=/usr/Hadoop

     export   PATH=$PATH:$HADOOP_HOME/bin

sourcr   /etc/profile          使配置生效

 

配置hadoop

1.配置hadoop-env.sh

    文件位于“/usr/Hadoop/conf”

  vi    /usr/Hadoop/conf/Hadoop-env.sh

        export   JAVA_HOME=/usr/java/jdk1.6.0_31

 

2.配置core-site.xml文件

  mkdir   /usr/Hadoop/tmp      创建文件夹tmp,用来保存hadoop临时数据

  vi   /usr/Hadoop/conf/core-site.xml

     <configuration>

   <property>

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

       <value>/usr/hadoop/tmp</value>

        备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹,默认采用系统的临时目录:/tmp/Hadoop-hadoop。而这个目录每次重启都会被干掉,必须重新执行format才行,否则会出错。)

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

   </property>

<!--file system properties 配置NameNode的访问地址-->

   <property>

       <name>fs.default.name</name>

        <value>hdfs://192.168.1.2:9000</value>

   </property>

</configuration>

 

 

3.配置hdfs-site.xml文件

   修改hadoop中的hdfs的配置,配置的备份方式默认是3

      <configuration>

   <property>

       <name>dfs.replication</name>

        <value>1</value>

        (备注:replication 是数据副本数量,默认为3salve少于3台就会报错)

   </property>

<configuration>

 

4.配置mapred-site.xml文件

     修改hadoop中mapreduce的配置文件,配置的jobTracker的地址和端口

<configuration>

   <property>

       <name>mapred.job.tracker</name>

        <value>http://192.168.1.2:9001</value>

   </property>

</configuration>

 

 

5.配置masters文件

   修改/usr/Hadoop/conf/masters文件,指定master机器的主机名

   vi   /usr/Hadoop/conf/masters

        192.168.1.2(或者是master)

 

 

6.配置slaves文件

   vi  /usr/Hadoop/conf/slaves

       slave1

       slave2

注意:单机启动的时候,conf/slaves中一定不能为空。没有其他机器,就指定自己。

集群环境下,slave机器上可以不配置slaves

 

 

7.在集群中的其他机器上重复此配置

     建议在普通用户hadoop下通过scp复制到其他机器的对应目录下。

     其中第6步是master机器上特有的

使用shell脚本:

  for  i  in  $(seq1  100);

   do  echo   slave$i;

   scp  /usr/hadoop   Hadoop@slave$i: /usr;

   scp /etc/profile  Hadoop@slave$i:/etc; 

    done

 

    复制文件后可能会发现hadoop目录是root权限

    chown -R   hadoop:Hadoop   Hadoop        授权给hadoop用户

 

Hadoop启动相关命令:

  Hadoop  namenode -format     在master机器上格式化namenode

                 只需要执行一次,如果要重新执行,一定要先删掉配置文件core-site.xml中配置的hadoop.tmp.dir对应路径下的文件

 

  service   iptables stop     关闭集群中所有机器防火墙

           For  iin  (seq  1  100 );

               Do    ssh node$i  “hostname;

service  iptable stop;

               chkconfig    iptables  off;

               service  iptables  status

”; done

 

 

start-all.sh              启动hadoop的所有服务,包含(hdfs和mapreduce的相关服务)

 

  可以通过以下启动日志看出,首先启动namenode 接着启动datanode1datanode2,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1tasktracker2

  启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。

 

jps       查看进程

    在master上的结果是:

       jobTracker

       NameNode

       jps

       SecondaryNameNode

在slave上的结果是:

    TaskTracker

    DataNode

    jps

 

 

Hadoop   dfsadmin   -report    查看hadoop集群的状态

Hadoop   dfsadmin  -safemode leave     关闭hdfs的安全模式

 

http:192.168.1.2:50030     访问mapreduce对应网页

http:192.168.1.2:50070     访问hdfs的对应网页

服务一直启动不了的终极解决办法:

1.删除集群中所有机器上的/usr/Hadoop/tmp文件

2.删除集群中所有机器上的pid文件。默认存放在/tmp目录下。这里我重新设置到了/bigdata/hadoop/pids,记得要授权给hadoop用户

3.重新执行stop-all.sh,把能关的服务先都关掉。

4.执行ps -ef | grep java| grep hadoop命令,查询是否还有hadoop相关进程才运行,如果有,执行kill -9  进程号    命令杀掉

5.重新格式化主机master

Hadoopnamenode  -format

6.执行start-all.sh启动hadoop

7.发现没有报错,执行 Hadoopdfsadmin –report 命令查看hadoop运行状态

出现如图所示:

发现只启动了一个节点。可能是还存在安全模式。

 

8.执行hadoop dfsadmin –safemodeleave,关闭主机上的安全模式

 

9.再次执行hadoop dfsadmin –report

 

 

 

解决“no   datanode to  stop”问题?

原因:

每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的idnamenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下的所有目录。

第一种方法:

删除master上的tmp文件夹

  rm  -rf  /usr/Hadoop/tmp

创建/usr/Hadoop/tmp文件夹

   mkdir  /usr/Hadoop/tmp

删除“/tmp”一下的“hadoop”开头文件

   rm  -rf  /tmp/Hadoop*

重新格式化hadoop的master

   Hadoop  namenode -format

启动hadoop

   start-all.sh

 

使用第一种方案,有种不好处就是原来集群上的重要数据全没有了。假如说Hadoop集群已经运行了一段时间。建议采用第二种。

 

第二种方法:(推荐)

1)修改每个SlavenamespaceID使其与MasternamespaceID一致。

  或者

2)修改MasternamespaceID使其与SlavenamespaceID一致。

  该"namespaceID"位于"/usr/hadoop/tmp/dfs/data/current/VERSION"文件中,前面蓝色的可能根据实际情况变化,但后面红色是不变的。

 

建议采用第二种,这样方便快捷,而且还能防止误删。

 

 

 

 

 

解决Exceeded   MAX_FAILED_UNIQUE_FETCHES问题

出现错误如下:

Shuffle Error: ExceededMAX_FAILED_UNIQUE_FETCHES; bailing-out

  程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。

执行ulimit  -a    查看文件限制数量

   vim   /etc/security/limits.conf

        添加:

       soft   nofile  102400

      soft  nofile  409600  

 

vim  /etc/pam.d/login

添加:

   session  required /lib/security/pam_limits.so

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值