版本 : hadoop-2.6.0-cdh5.7.0
HDFS伪分布式搭建
1)创建hadoop用户与app文件夹
[root@hadoop001 ~]# useradd hadoop
[root@hadoop001 ~]# su - hadoop
[hadoop@hadoop001 ~]$ mkdir app
[hadoop@hadoop001 ~]$ cd app/
上传jar包到app下
下载地址:http://archive.cloudera.com/cdh5/cdh/5/
注: 用户切不了怎么办? (This account is currently not available.)
修改 /etc/passwd。
把最后的/sbin/nologin --> /bin/bash
2)JDK安装
按照cdh的部署方式。
mkdir /usr/java jdk部署
mkdir /usr/share/java 部署CDH需要mysql jdbc jar包
解压:
[root@hadoop001 ~]# tar -zxvf jdk-8u45-linux-x64.tar.gz -C /usr/java
注:ll检查解压后java的用户以及用户组, 如果不是root,改为root :
[root@hadoop001 java]# chown -R root:root jdk1.8.0_45
3)配置环境变量:
[root@hadoop001 java]# vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_45
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使环境变量生效:source /etc/profile
验证:java -v
4)安装ssh
安装ssh:
[hadoop@hadoop001 java]$ sudo yum install ssh
配置ssh免密码登陆:
ssh-keygen -t rsa (全部回车)
将密钥安装到/home/hadoop/.ssh下
进入目录,
[hadoop@hadoop001 .ssh]$ ll
total 8
-rw------- 1 hadoop hadoop 1675 Feb 13 22:36 id_rsa 私钥
-rw-r--r-- 1 hadoop hadoop 398 Feb 13 22:36 id_rsa.pub 公钥
执行cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 。 将公钥放到认证文件中。
验证:ssh localhost/hadoop001
注: 若验证失败。
查看authorized_keys的权限。 并将权限改为600
[hadoop@hadoop001 .ssh]$ chmod 600 authorized_keys
5)安装hadoop
解压
配置环境变量:
export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
export PATH=$HADOOP_HOME/bin:$PATH
修改配置:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh :
# set to the root of your Java installation export JAVA_HOME=/usr/java/jdk1.8.0_45 # Assuming your installation directory is /usr/local/hadoop export HADOOP_PREFIX=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
因为进程的Pid文件默认存在/tmp下。 可能会被Linux非正常删除, 所以需要配:
export HADOOP_PID_DIR=/data/tmp
$HADOOP_HOME/etc/hadoop/core-site.xml:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop001:8020</value>
</property>
<property>
//指定临时文件存放目录
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
$HADOOP_HOME/etc/hadoop/hdfs-site.xml:
<property>
//设置副本系数为1
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop001:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>hadoop001:50091</value>
</property>
$HADOOP_HOME/etc/hadoop/slaves (配置DN节点的hostname)
hadoop001
6)启动HDFS
格式化文件系统(仅第一次执行,不要重复执行):
$ bin/hdfs namenode -format
启动NN进程和DN进程:
$ sbin/start-dfs.sh
验证:
访问:http://hadoop001:50070
遇到问题:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。造成启动进程时无法启动DataNode。
解决方法:
根据日志中的路径/home/hadoop/app/tmp/dfs能看到 data和name两个文件夹,将name/current下的VERSION中的clusterID复制到data/current下的VERSION中,覆盖掉原来的clusterID让两个保持一致
5)停止HDFS
$ sbin/stop-dfs.sh
YARN伪分布式环境搭建
1)mapred-site.xml (将mapred-site.xml.template复制一份得到)
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2)yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3) 启动YARN相关的进程
sbin/start-yarn.sh
4)验证
jps
ResourceManager
NodeManager
5)停止YARN相关的进程
sbin/stop-yarn.sh
提交mr作业到YARN上运行:
/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar
命令:hadop jar
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 5 10