Ubuntu 搭建hadoop平台

一、准备工作

1、所需软件
虚拟机 vmware workstation 11
系统:Ubuntu14.04(64位)
Java jdk:jdk1.8.5
Hadoop:hadoop-2.5.1 
2、安装jdk,配置java环境
(1)将本地的jdk-8u25-linux-x64.tar复制master的/home/hadoop目录下。
(2)通过快捷键ctrl+alt+t打开h1的命令窗口。
(3)安装(解压)jdk sudo tar -zxf jdk-8u25-linux-x64.tar.gz
(4)重命名 sudo mv jdk1.8.0_25 jdk
(4)打开配置文件 sudo gedit /etc/profile
(5)加入以下代码(根据实际安装目录更改路径):

     export JAVA_HOME=/home/hadoop/jdk  
     export JRE_HOME=${JAVA_HOME}/jre 
     export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
     export PATH=${JAVA_HOME}/bin:$PATH

(6)使环境变量生效 source /etc/profile
(7)测试jdk是否安装成功 java -version
输出
java version “1.8.0_25”
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

表示成功!

网络配置

我使用了3台主机搭建集群,主机名与IP地址对应如下:

Master 192.168.1.121
Slave1 192.168.1.122

Slave2 192.168.1.123

配置每台虚拟机的hostname

(1)打开文件 sudo gedit /etc/hostname

(2)选定哪台主机要作为Master(比如我选择的是ip为 192.168.1.121 这台),然后在该主机的 /etc/hostname 中,修改机器名为Master,将其他两台的主机名按照相同的方法改为Slave1和Slave2。

配置每台虚拟机的hosts
(1)打开文件 sudo gedit /etc/hosts (如果打不开,可能是权限问题,可以通过 sudo chmod 774 /etc/hosts 使文件可读写)。
(2)将hosts中的内容替换为(不要将localhost删去)

192.168.1.121 Master

192.168.1.122 Slave1

192.168.1.123 Slave2

配置好后可以在各个主机上执行ping Masterping Slave1测试一下,看是否相互ping得通

4、安装SSH(ubuntu自带)

这个操作是要让Master节点可以无密码SSH登陆到Slave节点上。

首先生成 Master 的公匙,在 Master 节点终端中执行:

cd ~/.ssh                      # 如果没有该目录,先执行一次ssh localhost
ssh-keygen -t rsa              # 一直按回车就可以,生成的密钥保存为.ssh/id_rsa

Master 节点需能无密码 ssh 本机,这一步还是在 Master 节点上执行:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

完成后可以使用 ssh Master 验证一下。接着将公匙传输到 Slave1 节点:

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

scp时会要求输入Slave1上hadoop用户的密码(hadoop),输入完成后会提示传输完毕。

接着在 Slave1节点 上将ssh公匙保存到相应位置,执行

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

如果有其他 Slave 节点,也要执行 将公匙传输到 Slave 节点、在 Slave 节点上加入授权 这两步。

最后在 Master 节点上就可以无密码SSH到Slave1节点了。

ssh Slave1

二、配置Hadoop

1、无密码登录
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。首先设置namenode的ssh为无需密码的、自动登陆:
(1)生成公钥和私钥 ssh-keygen -t rsa 完成后会在/home/hadoop目录产生隐藏文件.ssh。
(2)将公钥追加到authorized_keys中 cp id_rsa.pub authorized_keys
(3)测试 ssh h1 第一次会提示确认继续连接,打yes,这会把该服务器添加到你的已知主机列表中。
同样在h2,h3上做以上操作。使各个节点相互访问不需要密码,将三个节点的authorized_keys文件里面的内容合成一个文件然后替换掉原来的,替换完毕后可以用 ssh XX(XX为主机名)相互测试是否连接成功。
2、安装Hadoop并配置Hadoop文件
(1)通过winscp将本地的hadoop-2.5.1-x64.tar复制h1的/home/hadoop目录下。
(2)安装(解压)hadoop sudo tar xzf hadoop-2.5.1-x64.tar.gz
(4)重命名 sudo mv hadoop-2.5.1 hadoop
(5)配置profile sudo gedit /etc/profile 尾部添加如下代码:

export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop 
export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

设置立即生效 source /etc/profile
(6)修改Hadoop配置文件core-site.xml sudo gedit hadoop/etc/hadoop/core-site.xml
添加如下代码:

<configuration>
  <property>
        <name>fs.default.name</name>
        <value>hdfs://h1:49000</value>
    </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/var</value>
  </property>
</configuration>

(7)修改Hadoop配置文件hdfs-site.xml sudo gedit hadoop/etc/hadoop/hdfs-site.xml
添加如下代码:

<configuration>
  <property>
    <name>dfs.name.dir</name>
    <value>/home/hadoop/name1,/home/hadoop/name2</value> 
    <description> </description>
  </property>
  <property>
    <name>dfs.data.dir</name>
    <value>/home/hadoop/data1,/home/hadoop/data2</value>
    <description> </description>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

(7)默认情况下,/home/hadoop/hadoop/etc/hadoop/文件夹下有mapred.xml.template文件,我们要复制该文件,并命名为mapred.xml,该文件用于指定MapReduce使用的框架。

 cp mapred-site.xml.template mapred-site.xml (注意命令窗口的位置)

(8)修改Hadoop配置文件mapred-site.xml sudo gedit hadoop/etc/hadoop/mapred-site.xml
添加如下代码:

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
 </property>
 <property>
    <name>mapreduce.jobhistory.address</name>
    <value>h1:10020</value>
 </property>
 <property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>h1:19888</value>
 </property>
   <property>
      <name>mapred.local.dir</name>
      <value>/home/hadoop/var</value>
    </property>
</configuration>

(9)修改Hadoop配置文件yarn-site.xml sudo gedit hadoop/etc/hadoop/yarn-site.xml
添加如下代码:

<configuration>

<!-- Site specific YARN configuration properties -->
<property>  
   <name>yarn.nodemanager.aux-services</name>  
   <value>mapreduce_shuffle</value>  
</property>  
<property>  
   <name>yarn.resourcemanager.address</name>  
   <value>h1:8032</value>  
</property>  
<property>  
   <name>yarn.resourcemanager.scheduler.address</name>  
   <value>h1:8030</value>  
</property>  
<property>  
   <name>yarn.resourcemanager.resource-tracker.address</name>  
   <value>h1:8031</value>  
</property>  
<property>  
   <name>yarn.resourcemanager.admin.address</name>  
   <value>h1:8033</value>  
</property>  
<property>  
   <name>yarn.resourcemanager.webapp.address</name>  
   <value>h1:8088</value>  
</property>  
</configuration>

(10)修改Hadoop配置文件slaves sudo gedit hadoop/etc/hadoop/slaves
添加如下代码:

Slave1
Slave2

(11)修改Hadoop配置文件hadoop-env.sh sudo gedit hadoop/etc/hadoop/hadoop-env.sh
添加如下代码:

export JAVA_HOME=/home/hadoop/jdk
  • 1

(11)修改Hadoop配置文件yarn-env.sh sudo gedit hadoop/etc/hadoop/yarn-env.sh
添加如下代码:

export JAVA_HOME=/home/hadoop/jdk
  • 1

(12)配置完毕,把配置好的hadoop文件夹拷贝到其他集群的机器上(h2和h3)

scp -r /home/hadoop/hadoop hadoop@h2:/home/hadoop
scp -r /home/hadoop/hadoop hadoop@h3:/home/hadoop

(13)在h2和h3上做步骤(5)。

三、启动hadoop

1、先格式化一个新的分布式文件系统 cd hadoop hadoop namenode -format
成功后系统输出: INFO common.Storage: Storagedirectory /opt/hadoop/hadoopfs/name2 has been successfully formatted. 说明格式化成功!执行完后可以到master机器上看到/home/hadoop//name1和/home/hadoop//name2两个目录。
2.启动所有节点 start-all.sh(同时启动HDFS和Map/Reduce)在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。
3、查看进程 jps 出现以下信息:
7692 ResourceManager
7348 NameNode
14874 Jps
7539 SecondaryNameNode

4、jobhistory是Hadoop自带了一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动: mr-jobhistory-daemon.sh start historyserver
5、查看进程 jps 出现以下信息:
7692 ResourceManager
8428 JobHistoryServer
7348 NameNode
14874 Jps
7539 SecondaryNameNode

恭喜你,hadoop集群配置成功!

猜你喜欢

转载自blog.csdn.net/u013387787/article/details/78241907