环境
主机:ubuntu 14.04
主机ip:192.168.0.7
客户机:centos 6.5
客户机IP:192.168.0.101
jdk:jdk1.7.55
开发模式:
1.客户机关闭防火墙,selinux
2.客户机设置ssh免登陆
$ ssh-keygen -t rsa
在 ~/.ssh/有id_rsa和id_rsa.pub就是两个密钥,*.pub是公钥
$ cp id_rsa.pub authorized_keys
这步是伪分布的关键,如果是真正的集群,那么就需要把这个公钥复制到另一台机器的./ssh目录下,并且文件名仍然叫authorized_keys
2.解压hadoop1.1.2
3.配置环境变脸 /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk
export HADOOP_HOME/opt/hadoop
3.修改配置文件
修改4个文件
$HADOOP_HOME/conf/hadoop-env.sh
$HADOOP_HOME/conf/core-site.xml
$HADOOP_HOME/conf/hdfs-site.xml
$HADOOP_HOME/conf/mapred-site.xml
这几个配置文件都在jar包里存在默认配置
hadoop-core-1.1.2.jar里的core-default.xml
hadoop-core-1.1.2.jar里的hdfs-default.xml
hadoop-core-1.1.2.jar里的mapred-default.xml
3.1.修改hadoop-env.sh
修改
export JAVA_HOME=/usr/lib/jvm/jdk
3.2.修改core-site.xml
修改(其中的hdfs://ip:port是hadoop服务器的ip和端口号)
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop1.1.2/tmp</value>
</property>
</configuration>
注意hadoop.tmp.dir不要放到/tmp下,因为/tmp是易失的
3.3.修改hdfs-site.xml
修改
<configuration>
<property>
<name>dfs.replaction</name>
<value>1</value>
</property>
</configuration>
开发模式:
使用公众平台的开发接口,公众号可在自身服务器上接收用户的微信消息,并可按需回复。此外,我们还提供了更多更高级的功能和体验,如会话界面的自定义菜单、获取更多类型的消息等
更多功能接口问题,请点击这里了解。
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
3.4.修改mapred-site.xml
修改
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.0.101:9001</value>
</property>
</configuration>
3.5.格式化hdfs
进入到 $HADOOP_HOME/bin
$ hadoop namenode -format
4.启动hadoop
$HADOOP_HOME/bin/start-all.sh
启动后可以执行jps查看,应该存在
NameNode
DataNode
SecondaryNameNode
JobTracker
TaskTracker
如果配置有错,会少服务,可以去观察$HADOOP_HOME/logs下的日志来分析
或者用浏览器访问
http://192.168.0.101:50070 可以打开namenode状态页
http://192.168.0.101:50030 可以打开map/reduce 管理页
5.测试
[root@vpc01 ~]# hadoop fs -mkdir /demo1
Warning: $HADOOP_HOME is deprecated.
[root@vpc01 ~]# hadoop fs -ls /
Warning: $HADOOP_HOME is deprecated.
Found 2 items
drwxr-xr-x - root supergroup 0 2014-06-03 00:18 /demo1
drwxr-xr-x - root supergroup 0 2014-06-02 13:58 /tmp
[root@vpc01 ~]#
算是配置好了
6.常用命令
6.1.hadoop进入/离开安全模式
hadoop dfsadmin -safemode get 获取状态
hadoop dfsadmin -safemode enter 进入安全模式
hadoop dfsadmin -safemode leave 离开安全模式
注意安全模式就算hadoop重启了依旧保持在安全模式,而且在安全模式无法进行部分操作
6.2.job操作
$ hadoop job -list //列出所有正在运行的job
$ hadoop job -kill <job_id> //杀掉某个job
6.3.文件操作
hadoop fsck //hdfs块状态检查,但速度会很慢
hadoop fsck /delete #hdfs块状态检查,删除受损块
hadoop dfsadmin -report #检查hdfs状态,包括DataNode信息
hadoop distcp hdfs://ip:port/source hdfs:/ip:port/target //并行复制source到target
6.4.执行类
hadoop jar <jar_filename> <类名>
在mapreduce中执行某个类,这个类里面可以直接写hdfs里面的相对路径,类似/usr/myfile这样写,而不用写hdfs://ip:port/usr/myfile
6.5.平衡集群文件
start-balancer.sh //平衡集群文件,加了新机器后,重新计算整个集群的文件负载,速度会很慢
7.MapReduce执行过程
1 MapReduce程序运行job
2 由JobClient向JobTracker获取一个jobId
3 JobClient向HDFS上复制job所需资源(以jobid为标示)
4 JobClient向JobTracker提交Job
5 JobTracker初始化Job,准备执行
6 JobTracker向HDFS获取输入数据
7 TaskTrackers向JobTracker发起心跳,告知自己的忙闲状态,由JobTracker分解任务到TaskTracker
8 TaskTrackers向HDFS获取执行Job所需的数据
9 TaskTracker执行Job(在JVM中执行)
10 JVM中运行MapTask/ReduceTask
11 结束