一、安装前的准备,jdk-8u66-linux-x64.tar.gz(建分布式的时候会需要)、hadoop-2.6.0-x64.tar.gz
二、进入root用户,ifconfig 查看本机ip,牢记本机ip地址;安装伪分布式的时候可以直接输入yum -y install java* 即可自动下载安装并且配置好环境变量,
java -version
但是在最后启动hadoop的时候一定不能忘记修改JAVA_HOME 的具体地址,不然namenode会起不来,由于是直接yum安装的java,所以配置java地址的时候就使JAVA_HOME=/usr(我的用户名是hadoop,按说应该是JAVA_HOME=/hadoop,不知道为什么/usr也能启动namenode和secondarynamenode);
三、在root用户下输入hostname,查看主机名;hostname master 把主机名改为master,再hostname看是否修改成功,这种修改方式是临时修改主机名,要想永久修改命令为vi /etc/sysconfig/network (我在配伪分布式的时候两个命令都输了,把主机名永久修改为master,但是最后ssh互信就是不成功,然后输入 vi /etc/hosts 在后面尝试加入127.0.0.1 master、或者192.168.197.134 master 都互信不了,就报错是主机名有问题,最后没办法有把主机名改回localhost 才互信成功...不明白为啥建分布式的时候也是改为master,然后在vi /etc/hosts 后加入slave01 和ip的时候能互信成功,而且有的时候是用hostname改的,但下次启动虚拟机的时候仍然有效...)
四、ssh互信 hadoop用户权限下
1.在每个节点上建立密钥:ssh-keygen -t rsa
2.把id_rsa.pub追加授权到keys里面去:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
修改权限 chmod 755 ~/.ssh/authorized_keys
3.ssh 主机名测试 :ssh localhost 退出exit
五、在hadoop用户下新建hadoop文件夹
1. su hadoop
2.mkdir hadoop cd hadoop
3.rz 导入hadoop-2.6.0压缩包。tar -xzf 解压缩,解完删除压缩包(rm -r)
4.切换到root用户 修改hadoop环境变量,因为java 是yum安装,因此只需要配置hadoop就行
vi /etc/profile
在done的后面加入
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
5.改完一定不要忘记source 一下....
6.进入hadoop用户修改配置文件,在~目录下,vim .bash_profile
HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.6.0
PATH=/home/hadoop/hadoop/hadoop-2.6.0/bin:/home/hadoop/hadoop/hadoop-2.6.0/sbin:$PATH:$HOME/bin
HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
HADOOP_OPTS="-Djava.librart.path=$HADOOP_HOME/lib"
export PATH HADOOP_HOME HADOOP_COMMON_LIB_NATIVE_DIR HADOOP_OPTS
7.source 使文件生效
8.新建临时目录
mkdir tmp /hadoop/hadoop-2.6.0/tmp
chmod -R 755 /hadoop/cdhadoop-2.6.0/tmp
新建数据目录
mkdir /hadoop/hadoop-2.6.0/hdfs/data
新建元数据目录
mkdir /hadoop/hadoop-2.6.0/hdfs/name
设置访问权限
chmod -R 755 /hadoop/hadoop-2.6.0/hdfs
六、完全分布式集群安装(伪分布的时候只需要修改1,3和4)
1.hadoop-env.sh
-$JAVA_HOME
export JAVA_HOME=/usr
2.yarn-env.sh
-$JAVA_HOME
export JAVA_HOME=/usr
3.core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://主机名:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.6.0/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
4.hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hdfs://master:9005</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/hadoop/hadoop-2.6.0/hdfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.6.0/hdfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
5.mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property> <name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:10021</value>
</property>
</configuration>
6.yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property> <name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property> <name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property> <name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
7.格式化namenode bin/hdfs-namenode -format
8.启动hadoop sbin/start-all.sh hadoop-2.6.0和hadoop-1的区别就是2需要分别启动
启动hdfs
sbin/start-dfs.sh
检查hadoop01上的进程name secondary
jps
启动yarn
sbin/start-yarn.sh
检查hadoop01上的进程
10.如果是完全分布式则修改slaves
-加入其它机器
slave01
slave02
停止服务
-stop-dfs.sh
-stop-yarn.sh
11.若是完全分布式集群,在配置前记得关闭防火墙...
列出所有服务:chkconfig
列出防火墙状态:service iptables status
关闭防火墙:chkconfig iptables off //永久关闭
service iptables stop //临时关闭
查看selinux状态:getenforce
关闭selinux状态:vi /etc/selinux/config
改为SELINUX=disabled
hadoop用户下:
ssh-copy-id -i hadoop@slave01
ssh-copy-id -i hadoop@slave01
每台机子分别发给其他机子(注意都要在hadoop用户下发送)
master:slave01,slave02
slave01:master,slave02
slave02:master,slave01