0

【大数据基础】Hadoop集群环境伪分布式配置

Posted by Alan on January 4, 2016 in 大数据 |

本文使用环境为在VirtualBox上安装的CentOS虚拟机。这个安装部分比较简单,不再赘述,对这块不太熟悉的话可以参考【大数据基础】VirtualBox安装CentOS实操,考虑到生产环境多采用64位,本文中也使用64位的系统进行安装。

一、准备工作

在进入前需先做好网络配置,这部分在【大数据基础】VirtualBox安装CentOS实操中也做了介绍。接着需要做的是关闭防火墙,直接输入service iptables stop即可关闭防火墙,但这在重启后就会失效,要设置开机关闭防火墙请在命令行中输入chkconfig iptables off。
chkconfig iptables –list可以查看防火墙开机关闭状态,service iptables status可查看当前防火墙状态。
Linux iptables关闭方法

输入useradd hadoop添加用户hadoop,passwd hadoop两次输入密码来设置hadoop用户密码

Linux添加用户hadoop

二、安装JDK

安装方法一

可以去Oracle官网下载JDK然后上传到虚拟机上,对于可以上网的机器也可以直接通过wget命令下载到服务器上(未安装wget在命令行运行yum install wget -y来进行安装)。

然后为方便管理在/usr目录下创建一个java目录(),将所下载的JDK包直接解到到/usr/java目录

wget http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz
mkdir /usr/java
tar -xzvf jdk-8u66-linux-x64.tar.gz -C /usr/java/

安装方法二

除了通过tar包安装外还可以下载rpm包来完成安装,方法相似

wget http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.rpm
rpm -ivh jdk-8u66-linux-x64.rpm

配置环境变量

要方便地使用Java就必须要配置环境变量,我们在/etc/profile文件的最后添加如下配置

export JAVA_HOME=/usr/java/jdk1.8.0_66
export PATH=$JAVA_HOME/bin:$PATH

然后输入source /etc/profile在应用刚刚设置的配置,此时在命令行中输入echo $PATH就会发现/usr/java/jdk1.8.0_66/bin已经被添加到了环境变量中,可以在命令行中输入java -version查看版本号来进行验证。

三、安装Hadoop

我们将使用前面创建的hadoop用户来安装Hadoop,执行su – hadoop切换到hadoop用户,然后上传Hadoop安装包或在虚拟机上直接下载Hadoop安装包,然后将安装包解压到hadoop用户的根目录下(/home/hadoop)

root@hadoop01 ~]# su - hadoop
[hadoop@hadoop01 ~]$ wget http://apache.opencas.org/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
tar -xzvf hadoop-2.6.0.tar.gz 

免登录配置

为方便Hadoop在本地的使用乃至今后管理Hadoop集群,我们会生成一对密钥来实现免登录。在命令行键入ssh-keygen -t rsa并连续4次回车生成密钥(其中的rsa代表加密类型),其中id_rsa文件为私钥,id_rsa.pub文件为公钥(两个文件都在用户根目录的.ssh目录下)。

免登录生成公钥和私钥

实现免登录的原理实际上就是把公钥内容添加到所需免密码登录的主机的authorized_keys文件中,可以使用cat命令也可以使用专用的”ssh-copy-id -i 主机名或ip”来进行配置。当前我们采用伪分布式配置Hadoop,所以配置在本机上

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#上面的命令也可以使用ssh-copy-id -i localhost
chmod 0600 ~/.ssh/authorized_keys

此时发现已由之前ssh localhost需要输入密码变为免密码登录了(第一次登录需要输入设置为安全主机)
免密码登录本机

Hadoop配置文件

光解压Hadoop压缩包还未完成Hadoop的安装,需要修改的主要有以下5个配置文件,这几个文件都在hadoop安装包的etc/hadoop/目录下

cd hadoop-2.6.0/etc/hadoop/

1.hadoop-env.sh

在本文件中主要设置JAVA_HOME,将文件中export JAVA_HOME=${JAVA_HOME}部分的${JAVA_HOME}修改为Java的安装目录(/usr/java/jdk1.8.0_66)

export JAVA_HOME=/usr/java/jdk1.8.0_66

2.core-site.xml
在这个文件中主要配置NameNode的通信地址(fs.defaultFS)和hadoop运行时产生文件的存储路径(hadoop.tmp.dir)

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop01:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoop/hadoop-2.6.0/tmp</value>
        </property>
</configuration>

3.hdfs-site.xml
在本文件中主要设置hdfs的副本数量,本例中我们搭建的是伪分布式,因而设置为1

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

4.mapred-site.xml
默认是没有这个文件的,但有一个模板文件mapred-site.xml.template,可执行mv mapred-site.xml.template mapred-site.xml。该文件中的配置用于通知框架MapReduce使用的YARN资源管理器

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

5.yarn-site.xml
该文件中设置Reducer取数据的方式,这里是mapreduce_shuffl

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

这样我们就完成了Hadoop的配置,和Hadoop一样,为方便Hadoop命令的使用,也需要配置环境变量,可以在hadoop用户家目录的.bashrc或.bash_profile中进行配置,不过这里我们还是选择在/etc/profile中进行配置吧。这时需要执行exit切换回到root账号,将/etc/profile最后面的内容修改为:

export JAVA_HOME=/usr/java/jdk1.8.0_66
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

同样为何配置生效source一下该文件。

应用Hadoop

初次使用Hadoop时需要对NameNode进行格式化,只需执行如下命令

hdfs namenode -format

如果出现xxx has been successfully formatted.说明格式化成功

namenode格式化成功

此时还会发现hadoop-2.6.0下出现了一个tmp文件夹,接着启动HDFS和YARN,执行

start-dfs.sh
start-yarn.sh

注:如果前面在环境变量部分配置hadoop下的sbin目录,请切换到sbin目录执行相关命令(cd hadoop-2.6.0/sbin/),此时可使用jps命令查看运行的进程:

 jps命令执行结果

其中的NameNode和DataNode属于HDFS,ResourceManager和NodeManager属于YARN

在浏览器中输入http://192.168.1.110:50070/查看HDFS界面来进行进一步验证

Hadoop在浏览器端查看

输入http://192.168.1.110:8088/可查看YARN的管理界面

Hadoop的YARN管理界面

测试上传文件到HDFS

在hadoop用的家目录下执行

hadoop fs -put hadoop-2.6.0.tar.gz hdfs://hadoop01:9000/test

可将本地的文件上传到hdfs上,在http://192.168.1.110:50070/页面中可查看上传是否成功,可以看到文件已成功上传(也可在命令行中输入hadoop fs -ls /来进行查看)

HDFS查看文件系统

所上传的文件可以通过如下命令进行下载

hadoop fs -get hdfs://hadoop01:9000/test ./test_download

测试MapReduce和YARN
首先切换到mapreduce目下查看其中的jar包

cd hadoop-2.6.0/share/hadoop/mapreduce/

接着我们创建一个words文件用于进行wordcount测试:
vi words
hello tom
hello jerry
hello kitty
hello world
hello tom
将文件上传到hdfs上

hadoop fs -put words hdfs://hadoop01:9000/words

可使用hadoop fs -ls /进行验证
执行运算,结果输出到HDFS的output文件中

hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount hdfs://hadoop01:9000/words hdfs://hadoop01:9000/output

计算完成在浏览器端会发现有output有两个文件:_SUCCESS和part-r-00000,查看part-r-00000,内容为
hello 5
jerry 1
kitty 1
tom 2
world 1
这里按照字母顺序列出各个单词出现的次数。

注:如需使用主机名在浏览器中访问需要在本机的host文件中进行配置,Mac在/private/etc/hosts中配置,Windows在C:\WINDOWS\system32\drivers\etc\hosts中配置

四、安装HBase

1.首先下载并解压缩HBase文件

wget http://apache.opencas.org/hbase/stable/hbase-1.1.2-bin.tar.gz
tar -xzvf hbase-1.1.2-bin.tar.gz
mv hbase-1.1.2 hbase

2.然后修改两个配置文件:
a.hbase-env.sh设置JAVA路径

vi hbase/conf/hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_66

b.hbase-site.xml

vi hbase/conf/hbase-site.xml
   <property>
      <name>hbase.rootdir</name>
      <value>hdfs://hadoop01:9000/hbase</value>
   </property>
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
#伪分布式
   <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
   </property>

3.可将HBase的bin目录添加到.bash_profile中或者cd到hbase/bin目录下

启动hbase,执行hbase-start.sh,进入shell,执行hbase shell即可看到如下命令行窗口:

HBase Shell指令

此外在浏览器中输入http://hadoop01:16010/(如未绑定host可直接输入IP:http://192.168.1.110:16010/)也可验证HBase是否启动成功

HBase浏览器界面

五、安装Sqoop

1.首先下载并解压缩安装文件

wget http://apache.fayea.com/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
tar -xzvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

2.配置sqoop-env.sh

cd sqoop/conf
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
#修改对应内容如下
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.6.0
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.6.0
export HBASE_HOME=/home/hadoop/hbase

3.安装mysql-connector-java

wget http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-J/mysql-connector-java-5.1.36.tar.gz
tar -xzvf mysql-connector-java-5.1.36.tar.gz
mv mysql-connector-java-5.1.36/mysql-connector-java-5.1.36-bin.jar sqoop/lib/

4.测试连接MySQL并查看其中的数据库
cd 到sqoop/bin目录下或者把该目录添加到bash_profile等文件中,然后执行如下指令并输入数据库密码即可列出所有数据库名称

sqoop-list-databases --connect jdbc:mysql://localhost/ --username root -P

注:执行过程中可能会出现如下错误

Warning: /home/hadoop/sqoop/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.

并不会影响执行结果,可在sqoop/bin目录下的configure-sqoop文件中注释相应部分报错就会消失
通过Sqoop连接MySQL数据库

Tags: , ,

Leave a Reply

Copyright © 2012-2018 记录点滴生活 | Alan Hou的个人博客 All rights reserved.