Hadoop常用命令

网络配置

  • hostname 查看珠玑名

  • vim /etc/sysconfig/network 设置主机名

  • ifconfig 查看ip情况

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

    • DEVICE="eth0" 接口名(设备、网卡)

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

    • ONBOOT=yes 系统启动的时候网络端口是否有效

    • IPADDR=192.168.1.2 IP网址

    • GATEWAY=192.168.1.0 网关

    • DNS1=8.8.8.8 DNS服务器

  • service network restart 重启网卡服务

  • service network start 开始网卡服务

  • service network stop 停止网卡服务

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

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

  • vim /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 rsync是一个远程数据同步工具

  • service sshd restart 启动sshd服务

  • ssh-keygen -t rsa -p ' ' 生成无密码密钥对(存放路径是/home/Haddop/.ssh)

  • cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys  将id_rsa.pub追加到授权的key中

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

  • vim /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文件

安装JDK

  1. root用户登录

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

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

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

  5. ./jdk-6u31-linux-i584.bin  执行解压过的bin文件

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

  7. vim /etc/profile

在尾部添加以下内容:

# set java environment

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

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

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

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

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

安装剩余机器:

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

使用shell脚本安装:

for i in $(seq 1 100);

do echo slave$i;

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

done

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

Hadoop集群的安装

  1. 以root用户登录

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

  3. cd /usr

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

  5. mv Hadoop-1.0.0.tar.gz hadoop 文件夹重命名

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

  7. rm -rf Hadoop-1.0.0.tar.gz 删除安装文件

配置Hadoop的环境变量

  1. vim /etc/profile

    1. export HADOOP_HOME=/usr/Hadoop

    2. export PATH=$PATH:$HADOOP_HOME/bin

  2. source /etc/profile 使配置生效

配置hadoop

  1. 配置hadoop-env.sh(文件位于/usr/Hadoop/bin/conf)

    1. vim /usr/Hadoop/bin/conf/Hadoop-env.sh

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

  2. 配置core-site.xml文件

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

    2. vim /usr/Hadoop/bin/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>

  1. 配置hdfs-site.xml ,默认备份方式是3

<configuration>

   <property>

       <name>dfs.replication</name>

        <value>1</value>

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

   </property>

<configuration>

  1. 配置mapred-site.xml

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

<configuration>

   <property>

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

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

   </property>

</configuration>

  1. 配置mster

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

    vim /usr/Hadoop/conf/masters

        192.168.1.2(或者是master)

  1. 配置slave

vim /usr/Hadoop/conf/slaves

       slave1

       slave2

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

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

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

建议普通用户在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 i in (seq 1 100);

Do ssh node $i "hostname;

service iptables stop;

chkconfig iptables off;

service iptables status";

done

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

可以通过以下启动日志看出,首先启动namenode,接着启动datanode1,datanode2,......,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,.........。

启动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目录下。授权给hadoop用户

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

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

  5. 重新格式话珠玑master

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

  7. 发现没有报错,执行Hadoop dfsadmin -report 命令查看hadoop运行状态,发现只启动了一个节点。可能还是存在安全模式

  8. 执行hadoop dfsadmin -safemode leave 关闭主机上的安全模式

  9. 再一次执行hadoop dfsadmin -report

解决“no datanode to stop ”问题

原因:

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

  • 第一种方法:

删除master上的tmp文件夹  rm -fr /usr/Hadoop/tmp


猜你喜欢

转载自blog.51cto.com/12596916/2108421
今日推荐