本文使用环境为在VirtualBox上安装的CentOS虚拟机。这个安装部分比较简单,不再赘述,对这块不太熟悉的话可以参考【大数据基础】VirtualBox安装CentOS实操,考虑到生产环境多采用64位,本文中也使用64位的系统进行安装。
一、准备工作
在进入前需先做好网络配置,这部分在【大数据基础】VirtualBox安装CentOS实操中也做了介绍。接着需要做的是关闭防火墙,直接输入service iptables stop即可关闭防火墙,但这在重启后就会失效,要设置开机关闭防火墙请在命令行中输入chkconfig iptables off。
chkconfig iptables –list可以查看防火墙开机关闭状态,service iptables status可查看当前防火墙状态。
输入useradd hadoop添加用户hadoop,passwd hadoop两次输入密码来设置hadoop用户密码
二、安装JDK
安装方法一
可以去Oracle官网下载JDK然后上传到虚拟机上,对于可以上网的机器也可以直接通过wget命令下载到服务器上(未安装wget在命令行运行yum install wget -y来进行安装)。
然后为方便管理在/usr目录下创建一个java目录(),将所下载的JDK包直接解到到/usr/java目录
1 2 3 | 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包来完成安装,方法相似
1 2 | 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文件的最后添加如下配置
1 2 | 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)
1 2 3 | 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,所以配置在本机上
1 2 3 4 | 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/目录下
1 | cd hadoop-2.6.0/etc/hadoop/ |
1.hadoop-env.sh
在本文件中主要设置JAVA_HOME,将文件中export JAVA_HOME=JAVAHOME部分的{JAVA_HOME}修改为Java的安装目录(/usr/java/jdk1.8.0_66)
1 | export JAVA_HOME=/usr/java/jdk1.8.0_66 |
2.core-site.xml
在这个文件中主要配置NameNode的通信地址(fs.defaultFS)和hadoop运行时产生文件的存储路径(hadoop.tmp.dir)
1 2 3 4 5 6 7 8 9 10 | <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
1 2 3 4 5 6 | <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资源管理器
1 2 3 4 5 6 | <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> |
5.yarn-site.xml
该文件中设置Reducer取数据的方式,这里是mapreduce_shuffl
1 2 3 4 5 6 | <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最后面的内容修改为:
1 2 3 | 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进行格式化,只需执行如下命令
1 | hdfs namenode -format |
如果出现xxx has been successfully formatted.说明格式化成功
此时还会发现hadoop-2.6.0下出现了一个tmp文件夹,接着启动HDFS和YARN,执行
1 2 | start-dfs.sh start-yarn.sh |
注:如果前面在环境变量部分配置hadoop下的sbin目录,请切换到sbin目录执行相关命令(cd hadoop-2.6.0/sbin/),此时可使用jps命令查看运行的进程:
其中的NameNode和DataNode属于HDFS,ResourceManager和NodeManager属于YARN
在浏览器中输入http://192.168.1.110:50070/查看HDFS界面来进行进一步验证
输入http://192.168.1.110:8088/可查看YARN的管理界面
测试上传文件到HDFS
在hadoop用的家目录下执行
1 | hadoop fs -put hadoop-2.6.0.tar.gz hdfs: //hadoop01:9000/test |
可将本地的文件上传到hdfs上,在http://192.168.1.110:50070/页面中可查看上传是否成功,可以看到文件已成功上传(也可在命令行中输入hadoop fs -ls /来进行查看)
所上传的文件可以通过如下命令进行下载
1 | hadoop fs -get hdfs: //hadoop01:9000/test ./test_download |
测试MapReduce和YARN
首先切换到mapreduce目下查看其中的jar包
1 | cd hadoop-2.6.0/share/hadoop/mapreduce/ |
接着我们创建一个words文件用于进行wordcount测试:
vi words
hello tom
hello jerry
hello kitty
hello world
hello tom
将文件上传到hdfs上
1 | hadoop fs -put words hdfs: //hadoop01:9000/words |
可使用hadoop fs -ls /进行验证
执行运算,结果输出到HDFS的output文件中
1 | 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文件
1 2 3 | 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路径
1 2 | vi hbase/conf/hbase-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_66 |
b.hbase-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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即可看到如下命令行窗口:
此外在浏览器中输入http://hadoop01:16010/(如未绑定host可直接输入IP:http://192.168.1.110:16010/)也可验证HBase是否启动成功
五、安装Sqoop
1.首先下载并解压缩安装文件
1 2 3 | 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
1 2 3 4 5 6 7 | 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
1 2 3 | 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等文件中,然后执行如下指令并输入数据库密码即可列出所有数据库名称
1 | sqoop-list-databases --connect jdbc:mysql: //localhost/ --username root -P |
注:执行过程中可能会出现如下错误
1 2 3 4 | 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. |