说明:
-
本文描述的是基于Windows+虚拟机+CentOS的Hadoop+HBase的开发环境搭建过程,使用的Hadoop版本是CDH5(Cloudera Distribution including Apache Hadoop,CDH),旨在说明HADOOP的伪分布式环境搭建关键步骤。CDH5与Hadoop的关系,Hadoop、Hbase、Zookeeper之间的关系,及文中涉及的一些工具、命令的使用等与本文有关系不是特别密切的东西都没有详细说明,想了解更多请:http://www.google.com
-
本文旨在学习Hadoop,而且所有操作基本都是在虚拟机中进行,所以方便起见所有操作直接用root用户。
基础环境
操作系统
CDH5的环境要求可以参见:CDH 5 Requirements and Supported Versions 虚拟机可以用VMWare或VirtualBox,详细安装过程请自行Google ,本文所用的环境为Win8+VMWare+CentOS6.4 +CDH5:
虚拟机安装CentOS6.4方便起见推荐使用安装minimal版,小巧玲珑百度网盘下载
- minimal版的CentOS网络默认没有打开
用以下命令打开:ifconfig eth0 up
dhclient eth0
可以修改/etc/sysconfig/network-scripts/ifcfg-eth0将ONBOOT=no 改成ONBOOT=yes开机打开网络,如果要设置静态IP可以参考以下内容进行做修改
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes HWADDR=00:0C:29:30:35:C5 TYPE=Ethernet NAME="System etho0" UUID=fdaced38-14e2-4b7e-905e-01eebc698573 NM_CONTROLLED=yes BROADCAST=192.168.242.255 IPADDR=192.168.242.129 NETMASK=255.255.255.0 GATEWAY=192.168.242.2 IPV6INIT=no DNS1=192.168.242.2
-
为方便之后的操作,可能还需要以下操作,这一步不是必须的
yum update
先更新一下会自动选最快的源
常用软件安装yum install vim wget
下面这些你可能会能也会用到yum install lsof make ntp tcpdump time zip unzip git
yum groupinstall "Development Tools"
-
为方便与宿主机共享文件,可以安装VMwareTools,这一步也不是必须的
在虚拟机启动前先设置好共享目录然后
mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom tar -zxvf VMwareTools-xxxxx.tar.gz -C /tmp cd /tmp/vmware-tools-distrib ./vmware-install.pl #安装 一路回车选默认值直接到**Would you like to enable VMware automatic kernel modules? [no]**这个地可能需要yes
安装完成后重启,在/mnt/hgfs/就是可以看到共享的宿主机的目录
不行的话可以尝试手工挂载
mount -t vmhgfs .host:/ /mnt/hgfs/ 编辑 /etc/fstab,添加下面一行 .host:/ /mnt/hgfs vmhgfs defaults 0 0
注意:
- /etc/sysconfig/network中HOSTNAME的值初始值是安装的时候提供的主机名,而在/etc/hosts中又没有提供相应的映射,Hadoop各组件之件默认会用HOSTNAE+端口号进行通信,所以默认情况下会出错,并且我们需要的是宿主机中进行开发测试,也就是需要外部访问此伪分布式集群,所以你需要在/etc/hosts文件中加入一条映射:
1 |
192.168.242.129 centos.migle |
以上需要按实际情况做修改192.168.242.129是文中虚拟机地址, centos.migle是文中虚拟机HOSTNAME,下文中不再特别说明,如有出现请按自已实际对应做修改
估计不用虚拟机IP和HOSTNAME做映射也是可以,用一个新名字映射虚拟机IP也是可以的!!
- CentOS默认iptables是开的,可以这样查看状态
service iptables status
而本文描述的是在虚拟机中安装的Hadoop,会在宿主机中通过WEB UI或客户端的形式访问虚拟机中的Hadoop所以为方便起见把Iptables给关了:service stop iptables
可以直接设成开机不启动chkconfig iptables off
免得麻烦
软件环境
-
JDK安装
先检查是否已经安装java -version
环境变量是否已经设置echo $JAVA_HOME
如果没安装继续看下面,如果都没问题进入
下一步- 下载 :http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
-
安装:rpm -i jdk-7u55-linux-x64.rpm
-
环境变量设置:/etc/profile 添加以下内容:
1 2 3 |
export JAVA_HOME=/usr/java/jdk1.7.0_55 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin |
>> *重新登录或 `source /etc/profile` 生效*
伪分布式运行应该是不需要SSH Server的,安装主要是为方便在宿主机中用XShell连接虚拟机,不过好处是CentOS自带,不用额外安装
Hadoop
安装
- 设置软件源
1 2 3 |
wget http://archive.cloudera.com/cdh5/one-click-install/redhat/6/x86_64/cloudera-cdh-5-0.x86_64.rpm sudo yum --nogpgcheck localinstall cloudera-cdh-5-0.x86_64.rpm sudo rpm --import http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera |
- 安装:
sudo yum install hadoop-conf-pseudo
- 检查安装:
rpm -ql hadoop-conf-pseudo
hadoop version
配置
CDH5把Hadoop的配置文件都是在/etc/hadoop/conf下面放着伪分布部署时会有一个名为conf.pseudo的符号链接如果你需要在宿主机中访问,默认配置不用改变
CDH5的Hadoop部署只需要修改core-site.xml一个文件的一个位置,如果你不需要在虚拟机外部分访问,可以不用修改
- 修改:core-site.xml
1 2 3 4 5 |
<property> <name>fs.defaultFS</name> <!--把localhost修改成VM的IP,本文中修改为:192.168.242.129,如果配置成VM的HOSTNAME,在VM上操作没问题,但宿主机用JAVA API操作的时候会报报错!!--> <value>hdfs://localhost:8020</value> </property> |
-
格式化HDFS:
sudo -u hdfs hdfs namenode -format
可以看看: /etc/hadoop/conf.pseudo/hdfs-site.xml
namenode的data分别保存在:
/var/lib/hadoop-hdfs/cache/hdfs/dfs/name
/var/lib/hadoop-hdfs/cache/hdfs/dfs/data -
启动服务: for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
下次开机会自动启动
-
宿主机浏览器里打开:http://centos.migle:50070/ 如果看到类似以下界面,说明问题成功了一小步!..
-
创建相关目录
1 2 3 4 5 |
sudo -u hdfs hadoop fs -mkdir -p /tmp/hadoop-yarn/staging/history/done_intermediate sudo -u hdfs hadoop fs -chown -R mapred:mapred /tmp/hadoop-yarn/staging sudo -u hdfs hadoop fs -chmod -R 1777 /tmp sudo -u hdfs hadoop fs -mkdir -p /var/log/hadoop-yarn sudo -u hdfs hadoop fs -chown yarn:mapred /var/log/hadoop-yarn |
查看结果: hadoop fs -ls -R /
也可以在WEB界面中查看
安装的时候会自动创建hadoop,hdfs,yarn,mapred等用户
hadoop fs
会改给出HDFS的命令的帮助,和相应的Linux名字和相应功能都很像,参数也比较简单
- 启动YARN服务
1 2 3 |
sudo service hadoop-yarn-resourcemanager start sudo service hadoop-yarn-nodemanager start sudo service hadoop-mapreduce-historyserver start |
下次开机会自动启动
jps
后会有类似如下的输出:
1 2 3 4 5 6 |
13988 SecondaryNameNode 14627 ResourceManager 15051 JobHistoryServer 14705 NodeManager 13878 NameNode 13785 DataNode |
如有以上输出,说明配置基本完成,进行下一步测试
开发测试
本地MR任务测试
为管理方便给root用户在HDFS上创建个目录,并赋权
1 2 |
sudo -u hdfs hadoop fs -mkdir -p /user/root sudo -u hdfs hadoop fs -chown root /user/root |
在/etc/profile 中添加个环境变量
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce
export CLASSPATH=$CLASSPATH:$HADOOP_MAPRED_HOME
hadoop的JAR都在HADOOP_MAPRED_HOME目录下,但不知道这个环境变量是用来干什么的
创建一个test.txt的文件加上几行内容
1 2 3 |
echo "hello" >> test.txt echo "hadoop" >> test.txt echo "hi,hadoop" >> test.txt |
上传到hdfs中:hadoop fs -put -f test.txt /user/root/
查看文件:hadoop fs -ls -R /user/root/
查看文件内容 hadoop fs -cat /user/root/test.txt
如下图:
运行一个自带MR例子,
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount test.txt output
hadoop-mapreduce-examples.jar源码在Hadoop的源码包里有
结果会在output目录下生成output是相对路径,绝对
/user/root/output
查看结果:
hadoop fs -ls -R output
hadoop fs -cat /user/root/output/part-r-00000
远程HDFS JAVA API
代码见:https://github.com/longforfreedom/StudyHadoop
HBASE
安装:
1 2 3 4 |
sudo yum install zookeeper-server sudo yum install hbase-master sudo yum install hbase sudo yum install hbase-regionserver |
可选:sudo yum install hbase-thrift
##thrift接口需要sudo yum install hbase-rest
##rest接口
查看:
rpm -ql hbase
配置
- 创建相关目录
zookeeper的dataDir
1 2 |
mkdir -p /var/lib/zookeeper chown -R zookeeper /var/lib/zookeeper/ |
hbase目录ms会自动创建
sudo -u hdfs hadoop fs -mkdir /hbase
sudo -u hdfs hadoop fs -chown hbase /hbase
-
配置:
两个配置文件 /etc/hadoop/conf/hdfs-site.xml和/etc/hbase/conf/hbase-site.xml-
/etc/hadoop/conf/hdfs-site.xml中添加
dfs.datanode.max.xcievers
4096单机小测试不改这个应该不会出错!!
修改hdfs-site.xml需要重启Hadoop -
/etc/hbase/conf/hbase-site.xml 添加以下:
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.rootdir</name> <!--按实际情况修改--> <value>hdfs://centos.migle:8020/hbase</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>centos.migle</value> </property> |
-
启动:
- 启动Zookeeper
sudo service zookeeper-server init
#第一次启动时执行以后再不需要sudo service zookeeper-server start
测试zookeeper:
zookeeper-client -server localhost:2181
- 启动Hbase
sudo service hbase-master start
sudo service hbase-regionserver start
- 启动Zookeeper
下次开机会自动启动
宿主机中的访问:http://centos.migle:60010/
开发测试
HBASE SHELL 基本操作
hbase shell
进入HBASE SHELL,提示符会变成类似:hbase(main):002:0>以下命令都在HBASE SHELL执行.
- 查看状态 :
status
- 查看版本:
version
- 创建表:
create 'mtable','cf'
指定表名和列族,多个列族用“,”分隔如:create 'mtable','cf','cf2'
- 插入数据:
put '表名','rowKey','列名','列值'
put 'mtable','rowKey1','cf:acc_nbr','18797384480'
put 'mtable','rowKey1','cf:name','migle'
列可以动态创建: 列格式是:列族:列名 - 查看数据:
单行:get 'mtable' , 'rowKey1'
get 'mtable','rowKey1','cf:acc_nbr'
get 'mtable','rowKey1','cf'
所有:scan 'mtable'
- 行数:
count 'mtable'
- 更新数据:
put 'mtable','1','cf:acc_nbr','18797384481'
- 删除数据:
delete 'mtable','1','cf:name'
- 清空表:
truncate 'mtable'
- 查看表结构:
describe 'mtable'
- 修改表结构:
- 添加一个列族:
1 2 3 |
disable 'mtable' alter 'mtable', NAME => 'cf2' enable 'mtable' |
2. 删除列族:
1 2 3 |
disable 'mtable' alter 'mtable', 'delete' => 'cf2' enable 'mtable' |
- 删除表:
1 2 |
disable 'mtable' drop 'mtable' |
JAVA API远程测试
代码见:https://github.com/longforfreedom/StudyHadoop
Python
@TODO
安装 thrift
thrift依赖
sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby—-devel
/usr/lib/hbase/include/thrift
http://blog.csdn.net/guxch/article/details/12163047
其它:
- 在虚拟机中不要把HOSTNAME映射成127.0.0.1否则宿主机中JAVA API不能访问HBASE!!
- 可以pom.xml中加入cloudera的仓库,但直接用Apache版本的好像也没问题
1 2 3 4 5 6 |
<repositories> <repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> </repository> </repositories> |
相关推荐
### hadoop cdh版本伪分布式集群搭建图文教程详解 #### 一、引言 随着大数据技术的发展,Hadoop已成为处理大规模数据集的核心工具之一。CDH(Cloudera Distribution Including Apache Hadoop)作为Hadoop的一个发行...
CDH版本Hadoop 伪分布式环境搭建 服务规划 步骤 第一步:上传压缩包并解压 cd /export/softwares/ tar -zxvf hadoop-2.6.0-cdh5.14.0.tar.gz -C ../servers/ 第二步:查看Hadoop支持的压缩方式以及本地库 cd /...
《Hadoop伪分布式环境搭建详解》 Hadoop作为大数据处理的核心框架,其分布式环境的搭建是初学者必须掌握的关键技能之一。本篇文章将详细解析Hadoop伪分布式集群环境的搭建步骤,以及在搭建过程中可能遇到的问题及其...
本教程将指导你如何在Ubuntu 16.04系统上搭建Hadoop 2.6.0的伪分布式环境,这个环境模拟了一个完整的Hadoop集群,但所有服务都在同一台机器上运行。 首先,我们需要创建一个新的用户和用户组,这有助于管理和隔离...
### Ubuntu 完全分布式搭建 CDH 集群(Cloudera Manager) #### 搭建环境概述 本文档旨在详细介绍如何在 Ubuntu 14.04.3 系统下构建一个完整的 Cloudera Manager (CM) 管理的 CDH 集群。该集群将使用三台物理...
通过以上步骤,我们可以成功地在一个由三台主机组成的集群上部署了一个Hadoop伪分布式环境。这种模式虽然不是完全意义上的分布式,但它提供了足够的灵活性来测试和验证Hadoop的各种功能,同时也能够模拟出实际生产...
什么是Apache ZooKeeper 来自“ ZooKeeper是针对分布式应用程序的高性能协调服务。” 它在一个简单的界面中公开了常见的服务,例如命名,配置管理,同步和组服务,因此您不必从头开始编写它们。 您可以现成使用它来...
描述部分列举了一些具体的知识点,包含搭建企业级Hadoop集群的步骤、搭建高可用性(HA)的Hadoop分布式集群、安装CDH5集群环境,以及如何配置和使用Zookeeper、MapReduce的高级join操作。 对于标签“Hadoop”,这是...
在描述中提到了一个基于CDH5.14.0的伪分布式环境搭建步骤,这通常包括解压Hadoop安装包、安装依赖库(如openssl-devel)、修改配置文件、创建数据存储目录、分发安装包和配置环境变量。例如,通过`tar`命令解压,`...
1.02_02_01_04 使用CDH 5.3.6版本快速搭建Hadoop 2.x和Hive伪分布式环境 网页.mp4 1.02_02_01_05 Sqoop 1安装及基本使用讲解 网页.mp4 1.02_02_01_06 使用Sqoop导入数据到HDFS及本质分析 网页.mp4 1.02_02_01_07 ...
Hadoop集群可以在独立模式、伪分布式模式和完全分布式模式下运行。在独立模式下,所有的程序都在单个JVM上执行。在伪分布式模式下,Hadoop程序的守护进程运行在一台节点上。在完全分布式模式下,Hadoop的守护进程...
- **伪分布式模式**:在单台机器上模拟分布式环境,每个Hadoop进程都以独立Java进程运行。 - **完全分布式模式**:在多台机器上部署,适合生产环境。 5. **Hadoop生态组件** - **Hive**:基于Hadoop的数据仓库...
11. Hadoop 的运行模式包括单机版、伪分布式、分布式等。因此,正确答案是 abc) 单机版、伪分布式、分布式。 Cloudera 12. Cloudera 提供了多种安装 CDH 的方法,包括 Cloudera Manager、Tar ball、Yum、Rpm 等。...
1. Hadoop2.6.2伪分布式安装:介绍如何配置和安装Hadoop 2.6.2版本,以及如何设置单机模式。 2. Hadoop2.6.2完全分布式和Hadoop2.7.2完全分布式安装:讲解Hadoop集群的配置,包括如何搭建一个真正的分布式环境。 3. ...
在许多场景下,确保服务器之间的时间同步是非常重要的,特别是在分布式系统或集群环境中。例如,安装Cloudera Manager (CM) 或 Cloudera Distribution Including Hadoop (CDH) 时,如果服务器之间的时间不一致,可能...