大数据 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 # 启用公钥私钥配对认证方式

安装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=.: C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/lib: J R E H O M E / l i b e x p o r t P A T H = JRE_HOME/lib exportPATH= JREHOME/libexportPATH=PATH: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/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 ( s e q 1100 ) ; d o e c h o s l a v e (seq 1 100); do echo slave (seq1100);doechoslavei;
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= P A T H : 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


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

fs.default.name hdfs://192.168.1.2:9000

3.配置hdfs-site.xml文件
修改hadoop中的hdfs的配置,配置的备份方式默认是3


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

4.配置mapred-site.xml文件
修改hadoop中mapreduce的配置文件,配置的jobTracker的地址和端口


mapred.job.tracker
http://192.168.1.2:9001

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 ( s e q 1100 ) ; d o e c h o s l a v e (seq1 100); do echo slave (seq1100);doechoslavei;
scp /usr/hadoop Hadoop@slave i : / u s r ; s c p / e t c / p r o f i l e H a d o o p @ s l a v e i: /usr; scp /etc/profile Hadoop@slave i:/usr;scp/etc/profileHadoop@slavei:/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 接着启动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目录下。这里我重新设置到了/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下的id,namenode 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)修改每个Slave的namespaceID使其与Master的namespaceID一致。
  或者
2)修改Master的namespaceID使其与Slave的namespaceID一致。
  该"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、付费专栏及课程。

余额充值