准备工作:
Ubuntu14.04镜像文件;
xshell;
xftp;
virtualbox;
开始安装:
装好Ubuntu虚拟机;
在虚拟机上安装openssh server
apt-get -y install openssh-server安装vim
apt-get -y install vim修改主机名
vim /etc/hostname
将三台机器的主机名分别修改成Master,Slave1,Slave2-
安装JDK&&环境变量的配置
ps:此处有两种安装方式,在线或离线,网络较好推荐在线安装,但是如果网络不好,尽量使用离线安装
在线安装:sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java7-installer安装完成后配置环境变量
sudo vim ~/.bashrc
加入export JAVA_HOME=/usr/lib/jvm/java-7-oracle
source ~/.bashrc(使配置生效,这一步非常重要)离线安装:
先到官网下载你所需要的JDK安装包
JDK下载链接
创建JDK所需要的文件夹sudo mkdir /usr/local/java
将JDK复制到该目录下
cp jdk-8u25-linux-x64.tar.gz /usr/local/java
进入java目录并解压JDK
cd /usr/local/java
sudo tar -zxvf jdk-8u25-linux-x64.tar.gz删除压缩包
sudo rm -r jdk-8u25-linux-x64.tar.gz
配置环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_25
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
最后运行source ~/.bashrc使配置生效 -
修改三台机器的IP地址为静态
vim /etc/network/interface
加上如下内容
Auto eth0
Iface eth0 inet static
Address 192.168.1.100
Netmask 255.255.255.0
Gateway 192.168.1.1
保存并退出
vim /etc/resolv.conf
加上如下内容
Nameserver 192.168.1.1
Nameserver 220.170.64.68
保存并退出
vim /etc/resolvconf/resolv.conf.d/base
加上如下内容
Nameserver 192.168.1.1
Nameserver 220.170.64.68
保存并退出ps:使用静态IP相比动态IP要更方便一些,如果频繁更换网络环境,后期还要不断跟进修改host文件中的IP地址
-
修改hosts文件
sudo vim /etc/hosts
加入如下内容
192.168.1.100 Master
192.168.1.101 Slave1
192.168.1.102 Slave2
这里的IP地址和主机名改成与自己相对应的就行 -
设置免密登陆
在master机器上输入如下命令ssh-keygen(然后一路回车)
ssh-copy-id 用户名@192.168.1.101
ssh-copy-id 用户名@192.168.1.102
此处用户名是你另外两台机器的用户名,后面则是对应的IP地址,这样的操作在三台机器上都要进行,将对应的内容替换就行
ps:建议三台机器的用户名一致,更方便操作,避免记混 -
下载&&安装Hadoop
下载:
http://apache.fayea.com/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
将这段链接复制到迅雷之类的下载工具,下载完毕后用xftp上传到Ubuntu里面即可
安装:
sudo tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local
sudo mv /usr/local/hadoop-2.6.0 /usr/local/hadoop
sudo chown -R 用户名:用户名 /usr/local/hadoop
ps:此处是修改文件所属的组和用户,将hadoop文件归为你之前设置免密登陆的用户和组,避免后续免密登陆出现权限方面的问题最后输入如下命令验证Hadoop是否安装成功
/usr/local/hadoop/bin/hadop
如果输出一串英文则表明hadoop安装成功配置环境变量:
sudo vim ~/.bashrc
加上如下内容
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
最后输入source ~/.bashrc使配置生效
此时输入hdfs,如果看见相关提示,则说明安装成功了创建hadoop所需要的目录
Sudo mkdir /home/Hadoop
sudo chown –R 用户名:用户名 /home/Hadoop
mkdir /home/Hadoop/Hadoop-2.6.0
mkdir /home/Hadoop/Hadoop-2.6.0/tmp
mkdir /home/Hadoop/Hadoop-2.6.0/dfs
mkdir /home/Hadoop/Hadoop-2.6.0/dfs/name
mkdir /home/Hadoop/Hadoop-2.6.0/dfs/data
ps:此处修改权限与上面同理 -
修改配置文件
请仔细对比,避免出错vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
加上如下内容
export JAVA_HOME=/usr/local/java/jdk1.8.0_25vim /usr/local/hadoop/etc/hadoop/core-site.xml
在<configuration></configuration>中加上如下内容
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.6.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://Master:9000</value>
</property>
ps:此处Master就是你Master节点的主机名vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
在<configuration></configuration>中加上如下内容
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/name</value>
<description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/data</value>
<description>Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>vim /usr/local/hadoop/etc/hadoop/mapred-site.xml.template
在<configuration></configuration>中加上如下内容
<property>
<name>mapred.job.tracker</name>
<value>Master:9001</value>
<description>Host or IP and port of JobTracker.</description>
</property>
ps:此处Master同上
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xmlvim /usr/local/hadoop/etc/hadoop/slaves
将localhost删掉,加上如下内容
Slave1
Slave2vim /usr/local/hadoop/etc/hadoop/masters
加上如下内容
Masters -
格式化HDFS文件系统的namenode
cd /usr/local/hadoop && bin/hdfs namenode -format
ps:三台机器都要做 -
启动hadoop集群
/usr/local/hadoop/sbin/start-dfs.sh 开启
/usr/local/hadoop/sbin/stop-dfs.sh 关闭启动完成之后分别在三台机器上输入jps查看输出,如果master节点上成功启动了SecondarynNameNode,NameNode,Jps这三个进程,两台slave节点上都成功启动了DataNode,Jps这三个进程,那么恭喜你,你的Hadoop完全分布式集群已经搭建成功了
-
Hadoop基本操作
hadoop fs -mkdir /test/ //在HDFS上创建test文件文件夹
hadoop fs -ls / //查看hadoop的根目录下有哪些文件夹或文件
hadoop fs -put test //上传test文件到hadoop里面
hadoop fs -rm /test //删除hadoop根目录下的test文件
ps:其实在Hadoop里面进行文件操作的时候和我们在Linux里面差不多,只需要在命令前面加上hadoop fs然后命令加上-就好,掌握规律可以自己尝试些命令 -
可能出现的问题
在安装完成后输入jps并不能正确地看到我们想要的输出,而是提示jps包含在如下…这个是我们环境变量没有配置好,不管之前是否有效准确地执行了配置环境变量的那一步,重新配置一遍,记得一定要source一遍让配置生效
输入jps之后发现启动的进程少了一些,这时候需要自己去看日志文件来解决了,日志文件的目录是
usr/local/hadoop/logs
在里面找那种提示错误的信息,然后粘贴到百度里面,大部分问题应该都是能够解决的 -
后记
本人也就刚接触大数据Hadoop这个东西,最开始搭建集群也是错误百出,之后参考了Ypersistence大神关于搭建Hadoop的博客,一步一步排除各种问题终究还是搭建成功了,写这篇博客也是为了记录我的学习进程,记录曾今遇到的问题。
ps:如下是我搭建Hadoop集群时参考的相关资料
Ubuntu设置静态IP:http://jingyan.baidu.com/article/e5c39bf5bbe0e739d7603396.html
Ypersistence关于搭建Hadoop的博客:http://blog.csdn.net/ypersistence/article/details/53448632