环境
- CentOS 6.5
- Apache Hadoop 2.6.5
- JDK 7 (Hadoop3.0以上需要JDK8)
- hadoop-2.6.5.tar.gz
准备工作
准备4台虚拟机 node01、node02、node03、node04
-
检查虚拟机时间是否同步
-
检查/etc/sysconfig/network 中 HOSTNAME是否与上面一致
-
检查/etc/hosts 文件是否设置,是否一致
-
检查 /etc/sysconfig/selinux中 SELINUX=disabled
-
检查防火墙是否关闭
架构说明
- node01: nameNode(NN)
- node02: secondaryNameNode(SNN)、dateNode(DN)
- node03: dateNode(DN)
- node04: dateNode(DN)
主节点部署
-
安装jdk7
# 安装 rpm -i jdk-7u67-linux-x64.rpm
-
设置ssh免密钥登陆,并分发
# 使用ssh本地登录,如果才会有.ssh文件 ssh localhost # 切换到家目录 cd # 查看是否有.ssh 文件 并进入 ll -a cd ~/.ssh/ # 生成id dsa 公钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa # 把生成的公钥追加到authorized_keys 文件中,完成免密要操作 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys # 分发 到其他节点() scp id_dsa.pub root@node02:`pwd`/node01.pub scp id_dsa.pub root@node03:`pwd`/node01.pub scp id_dsa.pub root@node04:`pwd`/node01.pub
-
安装hadoop
# 创建目录 mkdir -p /opt/hadoop # 解压 tar xf hadoop-2.6.5.tar.gz -C /opt/hadoop
-
配置hadoop环境变量
vi + /etc/profile
-
修改hadoop路径相关配置文件
# 修改hadoop-env.sh 中 export JAVA_HOME= 的值为jdk路径 vi /opt/hadoop/hadoop-2.6.5/etc/hadoop/hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_67 # 修改 mapred-env.sh 计算框架中 # export JAVA_HOME 的值为jdk路径 vi /opt/hadoop/hadoop-2.6.5/etc/hadoop/mapred-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_67 # 修改 yarn-env.sh 资源管理框架 # export JAVA_HOME= 的值为jdk路径 vi /opt/hadoop/hadoop-2.6.5/etc/hadoop/yarn-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_67
-
设置主节点配置信息和副本数、secondaryNode地址
# 设置主节点配置信息 粘入core-site.xml中,修改块文件、元数据信息存放路径 vi /opt/hadoop/hadoop-2.6.5/etc/hadoop/core-site.xml <property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/hadoop/pseudo</value> </property> # 设置副本数 粘入hdfs-site.xml,设置 secondaryNode 在hdfs-site.xml vi /opt/hadoop/hadoop-2.6.5/etc/hadoop/hdfs-site.xml <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>node02:50090</value> </property>
-
设置从节点NN
# 设置从节点 把slaves中localhost 换成从节点主机名 vi /opt/hadoop/hadoop-2.6.5/etc/hadoop/slaves node02 node03 node04
-
配置完成把hadoop分发到其他节点
scp -r /opt/hadoop/ node02:`pwd` scp -r /opt/hadoop/ node03:`pwd` scp -r /opt/hadoop/ node04:`pwd`
-
配置并分发profile文件
# 修改profile 环境变量代码,在末尾加入 vi + /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_67 export HADOOP_HOME=/opt/hadoop/hadoop-2.6.5-src PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 使profile生效 . /etc/profile # 测试是否成功 jps hdfs # 分发 scp /etc/profile node02:/etc/ scp /etc/profile node03:/etc/ scp /etc/profile node04:/etc/
-
格式化并启动
# 格式化 [root@node01 hadoop]# hdfs namenode -format # 启动 [root@node01 hadoop]# start-dfs.sh Starting namenodes on [node01] node01: starting namenode, logging to /opt/hadoop/hadoop-2.6.5/logs/hadoop-root-namenode-node01.o utnode04: starting datanode, logging to /opt/hadoop/hadoop-2.6.5/logs/hadoop-root-datanode-node04.o utnode03: starting datanode, logging to /opt/hadoop/hadoop-2.6.5/logs/hadoop-root-datanode-node03.o utnode02: starting datanode, logging to /opt/hadoop/hadoop-2.6.5/logs/hadoop-root-datanode-node02.o utStarting secondary namenodes [node02] node02: starting secondarynamenode, logging to /opt/hadoop/hadoop-2.6.5/logs/hadoop-root-secondar ynamenode-node02.out[root@node01 hadoop]#
其他节点操作
-
登录本地ssh 生成.ssh群文件 ,把node01.pub 写入anaconda-ks.cfg 中,实现node01对其他node的免密登录
# 使用ssh本地登录,生成.ssh文件夹 ssh localhost # 执行后可以测试 此时node01 ssh访问其他节点可以免密登录 cat node01.pub >> authorized_keys
-
使环境变量生效
. /etc/profile
上传测试
# 创建目录
hdfs dfs -mkdir -p /user/root
# 创建文件
for i in `seq 100000`;do echo "test hello $i" >> test.txt;done
# 上传文件(/user/root 默认路径可以省略)
hdfs dfs -D dfs.blocksize=1048576 -put test.txt /user/root