操作系统:Ubuntu16.04(一台主机,两个虚拟机)
主机:linukey@192.168.0.7
虚拟机1:u1@192.168.0.12
虚拟机2:u2@192.168.0.13
必备软件:Hadoop-1.2.1、JDK、SSH(client+server)
对于jdk的安装,可以用一个很方便的方法,就是利用ppa进行安装和配置,方法如下:
1.添加PPA源:sudo add-apt-repository ppa:webupd8team/java
2.刷新APT:sudo apt update
3.安装jdk:sudo apt-get install oracle-java8-installer
4.设置环境变量:sudo apt-get install oracle-java8-set-default
sudo apt install ssh-client
sudo apt install ssh-server
以上步骤分别在主机和两台虚拟机上执行。
我们需要配置ssh免密登录,以便能够让hadoop NameNode节点无密访问各个DataNode节点,方法如下:
1.在主机上执行:ssh-keygen
2.cd ~/.ssh
3.cat id_rsa.pub >> authorized_keys
刚刚三个步骤我们在主机上设置了自身的免密登录,下面我们再在两个虚拟机上执行一下步骤,让主机能够免密登录虚拟机,方法如下:
1.在虚拟机上执行:ssh-keygen
2.cd ~/.ssh
3.rm id_rsa.pub
4.scp [email protected] ./
5.cat id_rsa.pub >> authroized_keys
6.ssh-keygen(问你是否覆盖,选择是)
7.cat id_rsa.pub >> authroized_keys
把以上7个步骤分别在两个虚拟机里面执行,就完成了主机在虚拟机上行的免密登录和虚拟机自身的免密登录
1.解压Hadoop-1.2.1包,并把Hadoop-1.2.1放在/opt目录下
2.cd /opt/hadoop-1.2.1/conf
3.sudo chown -R linukey hadoop-1.2.1
4.vim hadoop-env.sh
5.把export JAVA_HOME前面的#去掉,并添加上JAVA_HOHE的值,我们可以通过 echo JAVAHOME命令来查看电脑上 JAVA_HOME的位置
6.sudo vim /etc/profile 把一下两行添加进去
export HADOOP_HOME=/opt/hadoop-1.2.1
export PATH=/opt/hadoop-1.2.1/bin:${PATH}
通过以上步骤,我们就把Hadoop-1.2.1单机模式搭建好了,下面我们来搭建Hadoop-1.2.1分布式集群
分布式集群的搭建主要是对hadoop-1.2.1/conf下core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves这五个文件进行配置,这里踩了无数坑,网上的很多解决方案都没有提到这些坑,下面我们来看一下分布式集群的搭建:
- cd /opt/hadoop-1.2.1/conf
- vim core-site.xml
- 修改core-site.xml如下:
<configuration>
<property>
<name>fs.default.namename>
<value>hdfs://192.168.0.7:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/hadoop-1.2.1/hadoop-data/tmpvalue>
property>
configuration>
4.修改hdfs-site.xml如下:
<configuration>
<property>
<name>dfs.name.dirname>
<value>/opt/hadoop-1.2.1/hadoop-data/hdfs/namevalue>
property>
<property>
<name>dfs.data.dirname>
<value>/opt/hadoop-1.2.1/hadoop-data/hdfs/datavalue>
property>
<property>
<name>dfs.replicationname>
<value>2value>
property>
configuration>
5.修改mapred-site.xml如下:
<configuration>
<property>
<name>mapred.job.trackername>
<value>192.168.0.7:9001value>
property>
configuration>
6.修改master如下:
linukey@192.168.0.7
7.修改slaves如下:
[email protected]
[email protected]
通过以上几个步骤,我们就配置完了这五个文件,上面文件里面都是用的我的ip地址,改为自己的时候,对应着文章开头的ip地址和实际的ip地址修改就好,我们来说一下几个比较大的坑:
1.上面我们配置的dfs.name.dir、dfs.data.dir、dfs.tmp.dir,这三个属性配置的时候,一定要使用绝对路径才行,千万不要使用相对路径,比如 ~/hadoop-data,这个就打错特错了,因为当hadoop执行的时候,这个位置是相对的hadoop集群的位置,而不是你的主目录位置,而且,我们使用的相对路径,必须要有读写权限才行,所以,我们在把hadoop-1.2.1放入opt后,执行了sudo chown -R linukey hadoop-1.2.1这个命令,就是把这个文件夹的权限拿到手,下面我们在各个虚拟机复制主机hadoop-1.2.1的时候,也要执行,我们下面再说。
2.masters和salves里面配置的ip地址,我们要写成如下形式:[email protected],而不能写成:192.168.0.12,因为NameNode和DataNode节点在通信的时候,使用的是ssh通信的,如果写成192.168.0.12的话,那在启动hdfs的时候,hadoop便会认成[email protected],这样就错了(ps:网上的解决方案都没有提到过这一点,我不知道别人有没有遇到这种情况,但是我这里确实是这样的)
我们上面配置完了主机的hadoop,当我们再在虚拟机上配置hadoop的时候,我们就不用再重新配置了,只要复制过主机上已经配置好的目录到虚拟机就好了,方法如下:
1.cd /opt
2.sudo scp -r [email protected]:/opt/hadoop-1.2.1 ./
3.sudo chown -R user hadoop-1.2.1 (这里的user对应着你虚拟机用户名称)
这样的话,我们就在各个虚拟机上配置好了hadoop,并且拿到了文件夹的权限。
到这里,终于完成了Hadoop集群的配置,下面,我们来启动一下,看看是否已经配置成功。
- 进入主机节点
- hadoop namenode -format
- start-dfs.sh
- start-mapred.sh
- jps
执行完jps后,如果显示下面几个节点,就说明主机已经启动成功了:
6.进入各虚拟机
7.jps
如果显示以下几个进程,就说明启动成功了:
1.进入主节点
2.在浏览器输入 localhost:50070
显示如下:
我们上面配置的时候,都是用的ip地址来配置的,但是一旦我们的ip地址有变动,就得重新修改,很麻烦,我们可以修改 /etc/hosts 文件,给每个ip个别名,这样,在下次ip变动的时候,我们修改这个文件就可以了,但是切记:需要修改主机和所有虚拟机的hosts文件,并且相应ip和别名必须一样。
好了,到目前为止,我们已经搭建好了Hadoop-1.2.1集群框架。
转载请注明地址:http://blog.csdn.net/linukey/article/details/62870457