准备工作:
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_25
vim /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.xml
vim /usr/local/hadoop/etc/hadoop/slaves 将localhost删掉,加上如下内容 Slave1 Slave2
vim /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