大概步骤分为:

创建几台虚拟机(至少3台,可克隆)。

配置Java环境。

配置Hadoop环境。

配置ssh免密码登陆。

查看结果。

别人的都是把配置ssh这个步骤放到前面了,这样想克隆的话就有点麻烦。所以放后面,很多东西不用配几次了。

1、创建虚拟机

有几台物理机最好,没有的话就下载虚拟机镜像吧,用VMware创建一台虚拟机(配置好环境后再克隆两台),不闲麻烦就创建3台一个个配置。

(1)、打开向导后选择类型时选择《典型(推荐)(T)》——>安装程序光盘映像文件中找到下载得Linux镜像(Ubuntu或centos)——>起名,这里需要注意的是用户名,最好让所有虚拟机的用户名一样,不然后面会有很多麻烦。——>再填写虚拟机名称和位置后面都下一步就ok了。

ubuntu hdfs连接 ubuntu下hadoop的搭建_Ubuntu配置Hadoop

(2)、如果之前用VMware创建过虚拟机,有可能会出现下面的情况。找到虚拟机的目录和那个文件,用编辑器打开,修改里面的《vmci0.present = “TRUE”》这个值为FALSE即可。

ubuntu hdfs连接 ubuntu下hadoop的搭建_ubuntu hdfs连接_02

ubuntu hdfs连接 ubuntu下hadoop的搭建_ubuntu hdfs连接_03

2、配置Java环境

(1)、虚拟机打开后先执行sudo apt-get update更新下apt,再执行sudo apt-get install sshd-server安装ssh,运行ssh localhost生成.ssh文件夹。

(2)、之前写过一个配置Java环境的,去那看吧!Ubuntu下配置java链接:()

3、配置Hadoop环境

(1)下载:去官网下载的Hadoop解压后目录里好像都没有etc这个配置文件夹,这里有Hadoop的下载链接hadoop下载链接 (2)移动到虚拟机:使用《共享文件夹》或者《WinSCP》或者在虚拟机中使用wget https://gitee.com/langzi5213/hadoop.git下载,文件太大,有可能直接在虚拟机上下载不下来,如果选用共享文件夹,就依次打开虚拟机的设置——>选项——>共享文件夹——>选择右边的 总是启用——>选择需要共享的本机位置——>确定即可。在虚拟机的/mnt/hgfs/Desktop目录下可看到设置的共享位置。如果不会设置就用winscp吧,这个挺好用的。WinSCP使用教程

ubuntu hdfs连接 ubuntu下hadoop的搭建_Linux搭建Hadoop_04

(3)解压:在/mnt/hgfs/Desktop目录下打开命令窗口,执行sudo mv hadoop.tar.gz /usr/local把文件移动到/usr/local目录下。把文件弄到虚拟机上(放到/usr/local下即可 )后需要解压,在/usr/local目录下执行sudo tar -zxvf hadoop.tar.gz,解压文件后用ls命令就可看到当前目录下看到hadoop目录。

(4)配环境变量:运行gedit ~/.bashrc,打开文件后把下面的环境配置信息复制上去,注意修改自己的路径,上面是java的,下面的是Hadoop的。运行source ~/.bashrc时配置生效。运行java -version 和 hadoop version可分别看到版本信息。

export JAVA_HOME=/usr/local/java1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(5)创建运行时的文件夹:可以选择/home/hadoop目录下创建,也可以选择/usr/local/hadoop下的目录创建,不管在哪创建的在配置文件中配置好就行。需要创建logs、dfs、dfs/name、dfs/data、tmp。这几个文件夹。 (6)修改Hadoop的配置文件:Hadoop的配置文件在安装Hadoop目录下的/etc/hadoop下,完整路径为/usr/local/hadoop/etc/hadoop这里的etc不是根目录下的etc。没有etc文件夹的要么自己配,要么换成有etc的,官网下的好像没有。这里需要配置的有core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml.template、mapred-site.xml、slaves、yarn-site.xml。(有些不配置测试也不会出现啥问题,出问题了就得好好看配置了基本就是配置这些文件有问题。) (6.1)core-site.xml

<property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://master:9000</value> 
 </property> 
<property> 
   <name>hadoop.tmp.dir</name> 
   <value>file:/usr/local/hadoop/tmp</value>
    <description>Abase for other temporary directories.</description> 
</property>

(6.2)hadoop-env.sh:把JAVA_HOME的那个注销改成下面的明确路径,不改不知道会不会出问题),下面的额几个添加到里面,这个不添加在运行时会出现native的警告

#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/jdk1.8

export HADOOP_PREFIX=/usr/local/hadoop
export HADOOP_IDENT_STRING=$USER
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

(6.3)hdfs-site.xml:需要注意file:/usr/local/hadoop/dfs/name和file:/usr/local/hadoop/dfs/data,在哪建的文件夹,就改成哪里的。

<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value> 
</property> 
<property> 
  <name>dfs.namenode.name.dir</name> 
  <value>file:/usr/local/hadoop/dfs/name</value> 
</property> 

<property> 
   <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/dfs/data</value> 
 </property> 

<property> 
  <name>dfs.replication</name> 
  <value>3</value> 
</property>

(6.4)mapred-site.xml.template

<property>
   <name>mapred.job.tracker</name>
   <value>localhost:9001</value>
 </property>

(6.5)mapred-site.xml

<property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value>
  </property>

(6.6)slaves这里的是一个主节点和从节点的主机名,要和后面配置的hostname中的名字一样。

master
s1
s2

(6.7)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>

4、配置ssh免密登陆

(1)、克隆虚拟机:在VMware中的我的计算机中选中Hadoop的那个——>右击,管理–克隆——>虚拟机中的当前状态——>创建完整克隆(java和Hadoop配置的环境都克隆)——>虚拟机名称(master-slave1)选择目录。这样创建两台,共有3台虚拟机玩了。 (2)、修改hosts和hostname:先运行ifconfig查看3个虚拟机的ip,运行sudo chmod a+w /etc/hosts 和 sudo chmod a+w /etc/hostname修改权限。运行gedit /etc/hostname修改从机的名字为s1和s2。 运行 gedit /etc/hosts 添加下面的节点和IP对应关系,注意《127.0.1.1 master》在s1下,master就改为s1。s2就改为s2。3台都添加好后ping s1 、ping s2看看能不能ping通,都互ping一下。修改完后需要重启再打开命令窗口后才能看到主机名变了,最好重启下。主机名都一样ssh后不知道进入谁的虚拟机了。

192.168.52.161   master
192.168.52.163   s1
192.168.52.162   s2

(3)生成密钥:在master上运行cd ~/.ssh如果没有.ssh文件夹就运行ssh localhost来生成一个文件夹。运行ssh-keygen -t rsa生成密钥,会多id_rsa和id_rsa.pub这两个文件。运行cat ./id_rsa.pub >> ./authorized_keys加入授权,再运行ssh localhost连接本机就不需要密码了,运行exit退出连接。 (4)发送密钥:运行scp ~/.ssh/id_rsa.pub hadoop@s2:/home/hadoop/将生成的公钥id_rsa.pub发送至s1和s2的/home/hadoop目录下。进入s1和s2运行cat /home/hadoop/id_rsa.pub >> ~/.ssh/authorized_keys,将master的公钥进行授权,注意目录。运行后去.ssh目录下会有authorized_keys。运行ssh s1输入一次密码后,以后就不需要再输入密码了。

5、查看结果

(1)格式化namenode:hdfs namenode -format (2)启动namenode和datanode进程:start-dfs.sh在浏览器上输入localhost:50070或 master:50070或在window上输入master的ip:50070也可以看到下面的信息。

ubuntu hdfs连接 ubuntu下hadoop的搭建_Linux配置Hadoop_05

(3) 启动Hadoop:start-yarn.sh,在浏览器上输入localhost:8088 和 master:8042可以分别看到下面的信息。

ubuntu hdfs连接 ubuntu下hadoop的搭建_Linux配置Hadoop_06

ubuntu hdfs连接 ubuntu下hadoop的搭建_Ubuntu搭建Hadoop_07

(4)可以用start-all.sh把这两个都启动。在master和s1上运行jps可分别看到下面的信息。DataNode和NodeManager都不能少。没有DataNode就删除dfs文件夹后再建。只运行start-all.sh也有可能让DataNode不出现。

ubuntu hdfs连接 ubuntu下hadoop的搭建_Ubuntu搭建Hadoop_08

ubuntu hdfs连接 ubuntu下hadoop的搭建_Linux搭建Hadoop_09