准备工作
1.构建三个linux环境作为三个节点
2.三个节点间可相互通信
3.三个节点的IP和hostname绑定(不绑定也可以,直接用IP)
4.关闭所有节点防火墙(service iptables stop,本人在这里犯过错误,浪费好多时间)
开始搭建
一.安装jdk(三个节点均安装)
1.我用的是jdk-8u11-linux-x64.tar.gz,直接解压即安装
2.配置JAVA_HOME,/etc/profile文件中,添加
JAVA_HOME=java安装路径,如/opt/tool/jdk1.8
CLASSPATH=$JAVA_HONE/lib/
PATH=$PATH:$JAVA_HOME/bin:$PATH
保存,退出
3.让配置立即生效:source /etc/profile
4.验证java是否安装成功
java -version 命令,出现java信息及配置成功
二.安装hadoop及配置
1.我用的是hadoop-1.1.2.tar.gz,直接解压即安装(先在作为主节点的环境下操作)
2.修改配置文件
HDFS相关
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hdfs/tmp</value>
</property>
</configuration>
fs.default.name是指NameNode结点的URL,由协议、主机名称、端口号组成,集群里的每一台机器都需要知道NameNode的地址。
hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
dfs.replication表示副本数目,不设置就默认为3,注意的是副本数一定是小于等于datanode节点数
slaves
192.168.......
192.168.......
配置datanode的结点地址
masters
192.168.......
配置secondnamenode的结点地址,注意,不要与namenode在一个结点上
hadoop-env.sh
配置JAVA_HOME
mapreduce相关
mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>node3:9001</value>
</property>
jobtracker的地址
3.将hadoop复制给其他两个节点
scp hadoop文件夹 用户名@hostname(比如root@node2):要复制到的节点的存放hadoop的路径
4.在/etc/profile文件中,添加
HADOOP_HOME=hadoop安装路径,如java
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH 添加到path,可以使用hdfs的命令
三.配置免秘钥登录
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 生成秘钥
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将id_dsa.pub文件内容追加到authorized_keys
touch authorized_keys
scp 文件名 用户名:路径 如scp id_dsa.pub 用户名@hostname:~ 复制本地文件到远程结点