1. 如何初始化,启动及停止Hadoop集群
第一步,在Hadoop01机器上启动Zookeeper:
[root@hadoop01 ~]# /root/apps/zookeeper/bin/zkServer.sh start
第二步,在Hadoop02机器上启动Zookeeper:
[root@hadoop02 ~]# /root/apps/zookeeper/bin/zkServer.sh start
第三步,在Hadoop03机器上启动Zookeeper:
[root@hadoop03 ~]# /root/apps/zookeeper/bin/zkServer.sh start
启动Zookeeper之后,可以分别在3台机器上使用如下命令查看Zookeeper的启动状态:
/root/apps/zookeeper/bin/zkServer.sh status
第四步,在Hadoop01机器上启动HDFS:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/start-dfs.sh
第五步,在Hadoop01机器上启动YARN:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/start-yarn.sh
第六步,在Hadoop02机器上单独启动一个ResourceManager:
(注意这里使用的是“yarn-daemon.sh”命令,而不是“hadoop-daemon.sh”,不知道为什么使用“hadoop-daemon.sh”无法启动ResourceManager)
[root@hadoop02 ~]# /root/apps/hadoop/sbin/yarn-daemon.sh start resourcemanager!
2. spark、hive、impala、hdfs的常用命令
对spark、hive、impala、hdfs的常用命令作了如下总结,欢迎大家补充!
1. Spark的使用:
以通过SecureCRT访问IP地址:10.10.234.198 为例进行说明:
先输入:ll //查询集群是否装有spark
>su - mr
>/home/mr/spark/bin/beeline -u "jdbc:hive2:/bigdata198:18000/" -n mr -p ""
>show databases; //显示其中数据库,例如
>use bigmax; //使用数据库bigmax
>show tables; //查询目录中所有的表
>desc formatted TableName; //显示表的详细信息,包括分区、字段、地址等信息
>desc TableName; //显示表中的字段和分区信息
>select count(*) from TableName; //显示表中数据数量,可以用来判断表是否为空
>drop table TableName; //删除表的信息
>drop bigmax //删除数据库bigmax
>describe database zxvmax //查询数据库zxvmax信息
创建一个表
第一步:
>create external table if not exists lte_Amaze //创建一个叫lte_Amaze的表
( //括号中每一行为表中的各个字段的名称和其所属的数据类型,并用空格隔开
DateTime String,
MilliSec int,
Network int,
eNodeBID int,
CID int,
IMSI String,
DataType int,
AoA int,
ServerRsrp int,
ServerRsrq int,
TA int,
Cqi0 Tinyint,
Cqi1 Tinyint //注意,最后一个字段结束后,没有逗号
)
partitioned by (p_date string, p_hour INT) //以p_date和p_hour作为分区
row format delimited fields terminated by ',' /*/*表中行结构是以逗号作为分隔符,与上边的表中字段以逗号结尾相一致*/
stored as textfile; //以文本格式进行保存
第二步:添加分区,指定分区的位置
>alter table lte_Amaze add partition (p_date='2015-01-27',p_hour=0) location'/lte/nds/mr/lte_nds_cdt_uedetail/p_date=2015-01-27/p_hour=0';
//添加lte_Amaze表中分区信息,进行赋值。
//并制定分区对应目录/lte/nds/mr下表lte_nds_cdt_uedetail中对应分区信息
第三步:察看添加的结果
>show partitions lte_Amaze; //显示表的分区信息
2. hdfs使用:
#su - hdfs //切换到hdfs用户下 、
#hadoop fs –ls ///查看进程
# cd /hdfs/bin //进入hdfs安装bin目录
>hadoop fs -ls /umtsd/cdt/ //查询/umtsd/cdt/文件目录
>hadoop fs -mkdir /umtsd/test //在/umtsd目录下创建test目录
>hadoop fs -put /home/data/u1002.csv /impala/data/u5002 //将home/data/u1002.csv这个文件put到hdfs文件目录上。put到hdfs上的数据文件以逗号“,”分隔符文件(csv),数据不论类型,直接是数据,没有双引号和单引号
>hadoop fs -rm /umtsd/test/test.txt //删除umtsd/test目录下的test.txt文件
>hadoop fs -cat /umtsd/test/test.txt //查看umtsd/test目录下的test.txt文件内容
3hive操作使用:
#su - mr //切换到mr用户下
#hive //进入hive查询操作界面
hive>show tables; //查询当前创建的所有表
hive>show databases; //查询当前创建的数据库
hive>describe table_name; {或者desc table_name}//查看表的字段的定义和分区信息,有明确区分(impala下该命令把分区信息以字段的形式显示出来,不怎么好区分)
hive> show partitions table_name; //查看表对应数据现有的分区信息,impala下没有该命令
hive> quit;//退出hive操作界面
hive>desc formatted table_name; 查看表结构,分隔符等信息
hive> alter table ceshi change id id int; 修改表的列数据类型 //将id数据类型修改为int 注意是两个id
hive> SHOW TABLES '.*s'; 按正条件(正则表达式)显示表,
[mr@aico ~]$ exit; 退出mr用户操作界面,到[root@aico]界面
impala操作使用:
#su - mr //切换到mr用户下
#cd impala/bin //进入impala安装bin目录
#/impala/bin> impala-shell.sh -i 10.10.234.166/localhost //进入impala查询操作界面
[10.10.234.166:21000] >show databases; //查询当前创建的数据库
[10.10.234.166:21000] >use database_name; //选择使用数据库,默认情况下是使用default数据库
[10.10.234.166:21000] > show tables; //查询当前数据库下创建的所有表
[10.10.234.166:21000] >describe table_name; //查看表的字段的定义,包括分区信息,没有明确区分
[10.10.234.166:21000] > describe formatted table_name; //查看表对应格式化信息,包括分区,所属数据库,创建用户,创建时间等详细信息。
[10.10.234.166:21000] >refresh table_name; //刷新一下,保证元数据是最新的
[10.10.234.166:21000] > alter TABLE U107 ADD PARTITION(reportDate="2013-09-27",rncid=487)LOCATION '/umts/cdt/
MREMITABLE/20130927/rncid=487' //添加分区信息,具体的表和数据的对应关系
[10.10.234.166:21000] > alter TABLE U100 drop PARTITION(reportDate="2013-09-25",rncid=487); //删除现有的分区,数据与表的关联
[10.10.234.166:21000] >quit; //退出impala操作界面
[mr@aicod bin]$ impala-shell; 得到welcome impala的信息,进入impala 查询操作界面
[aicod:21000] > 按两次tab键,查看可以用的命令
alter describe help profile shell values
connect drop history quit show version
create exit insert select unset with
desc explain load set use
3. 启动hadoop中have命令
Hadoop集群启动命令。
1、启动NameNode,DataNode。
2、启动JournalNode,JournalNode在hdfs-site.xml中指定editslog存储的位置,主备NameNode共享数据,方便同步。
3)、启动DFSZKFailoverController,HA会启用ZooKeeperFailoverController。
4、启动YARN守护进程ResourceManager,NodeManager。
4. 何时使用hadoop fs,hadoop dfs与hdfs dfs命令
hadoop hdfs dfs基本操作
本文主要参考:
http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/FileSystemShell.html
根据上面官方文档的提示我们能够知道可以通过shell的方式访问hdfs中的数据,对数据进行操作。那么首先让我们看一下hdfs的版本,使用命令hdfs version。
好,下面上货:
1、查询
使用命令:
hdfs dfs -ls / 这条执行会列出/目录下的文件和目录
hdfs dfs -ls -R /这条会列出/目录下的左右文件,由于有-R参数,会在文件夹和子文件夹下执行ls操作。
2、添加文件夹
使用命令;
hdfs dfs -mkdir -p /xytest/testdata001/
这里需要注意的是,root用户是否拥有hdfs 的权限,如果有,我们可以继续操作,如果没有,我们可以直接使用hdfs用户,默认安装完cdh后,用户hdfs拥有所有的权限。如果对于权限有不明白的,推荐看一下我的另一篇文章:
http://blog.csdn.net/wild46cat/article/details/69664376
3、增加文件
使用命令:
hdfs dfs -FromLocal ~/123.txt /xytest/testdata001/
4、查看hdfs文件中的内容
使用命令:
hdfs dfs -cat /xytest/testdata001/123.txt
或者,可以把hdfs中的文件到本地
使用命令:
hdfs dfs -ToLocal /xytest/testdata001/123.txt ~/222.txt
5、删除文件
使用命令:
hdfs dfs -rm -f /xytest/testdata001/123.txt
6、删除文件夹
使用命令:
hdfs dfs -rm -r /xytest/testdata001
5. 启动HDFS后,正常情况下,使用________命令可以查看到已经启动的进程有
摘要 jps
6. 为什么启动hadoop后在hdfs上系统里创建input的文件夹的命令没有用 命令为hadoop
首先hadoop2以后 命令有所变化 启动hdfs服务后
建立文件夹应该使用dfs
例如 hdfs dfs -mkdir /filename
其次需要在文件前加 / 代表建立在根目录,也可以加其他目录 ,比如 、/usr/local/
不加 / 会报错
7. 大数据:Hadoop入门
什么是大数据:
(1.)大数据是指在一定时间内无法用常规软件对其内容进行抓取,管理和处理的数据集合,简而言之就是数据量非常大,大到无法用常规工具进行处理,如关系型数据库,数据仓库等。这里“大”是一个什么量级呢?如在阿里巴巴每天处理数据达到20PB(即20971520GB).
2.大数据的特点:
(1.)体量巨大。按目前的发展趋势来看,大数据的体量已经到达PB级甚至EB级。
(2.)大数据的数据类型多样,以非结构化数据为主,如网络杂志,音频,视屏,图片,地理位置信息,交易数据,社交数据等。
(3.)价值密度低。有价值的数据仅占到总数据的一小部分。比如一段视屏中,仅有几秒的信息是有价值的。
(4.)产生和要求处理速度快。这是大数据区与传统数据挖掘最显着的特征。
3.除此之外还有其他处理系统可以处理大数据。
Hadoop (开源)
Spark(开源)
Storm(开源)
MongoDB(开源)
IBM PureDate(商用)
Oracle Exadata(商用)
SAP Hana(商用)
Teradata AsterData(商用)
EMC GreenPlum(商用)
HP Vertica(商用)
注:这里我们只介绍Hadoop。
二:Hadoop体系结构
Hadoop来源:
Hadoop源于Google在2003到2004年公布的关于GFS(Google File System),MapRece和BigTable的三篇论文,创始人Doug Cutting。Hadoop现在是Apache基金会顶级项目,“
Hadoop”一个虚构的名字。由Doug Cutting的孩子为其黄色玩具大象所命名。
Hadoop的核心:
(1.)HDFS和MapRece是Hadoop的两大核心。通过HDFS来实现对分布式储存的底层支持,达到高速并行读写与大容量的储存扩展。
(2.)通过MapRece实现对分布式任务进行处理程序支持,保证高速分区处理数据。
3.Hadoop子项目:
(1.)HDFS:分布式文件系统,整个Hadoop体系的基石。
(2.)MapRece/YARN:并行编程模型。YARN是第二代的MapRece框架,从Hadoop 0.23.01版本后,MapRece被重构,通常也称为MapRece V2,老MapRece也称为 MapRece V1。
(3.)Hive:建立在Hadoop上的数据仓库,提供类似SQL语音的查询方式,查询Hadoop中的数据,
(5.)HBase:全称Hadoop Database,Hadoop的分布式的,面向列的数据库,来源于Google的关于BigTable的论文,主要用于随机访问,实时读写的大数据。
(6.)ZooKeeper:是一个为分布式应用所设计的协调服务,主要为用户提供同步,配置管理,分组和命名等服务,减轻分布式应用程序所承担的协调任务。
还有其它特别多其它项目这里不做一一解释了。
三:安装Hadoop运行环境
用户创建:
(1.)创建Hadoop用户组,输入命令:
groupadd hadoop
(2.)创建hser用户,输入命令:
useradd –p hadoop hser
(3.)设置hser的密码,输入命令:
passwd hser
按提示输入两次密码
(4.)为hser用户添加权限,输入命令:
#修改权限
chmod 777 /etc/sudoers
#编辑sudoers
Gedit /etc/sudoers
#还原默认权限
chmod 440 /etc/sudoers
先修改sudoers 文件权限,并在文本编辑窗口中查找到行“root ALL=(ALL)”,紧跟后面更新加行“hser ALL=(ALL) ALL”,将hser添加到sudoers。添加完成后切记还原默认权限,否则系统将不允许使用sudo命令。
(5.)设置好后重启虚拟机,输入命令:
Sudo reboot
重启后切换到hser用户登录
安装JDK
(1.)下载jdk-7u67-linux-x64.rpm,并进入下载目录。
(2.)运行安装命令:
Sudo rpm –ivh jdk-7u67-linux-x64.rpm
完成后查看安装路径,输入命令:
Rpm –qa jdk –l
记住该路径,
(3.)配置环境变量,输入命令:
Sudo gedit /etc/profile
打开profile文件在文件最下面加入如下内容
export java_HOME=/usr/java/jdk.7.0.67
export CLASSPATH=$ JAVA_HOME/lib:$ CLASSPATH
export PATH=$ JAVA_HOME/bin:$PATH
保存后关闭文件,然后输入命令使环境变量生效:
Source /etc/profile
(4.)验证JDK,输入命令:
Java –version
若出现正确的版本则安装成功。
配置本机SSH免密码登录:
(1.)使用ssh-keygen 生成私钥与公钥文件,输入命令:
ssh-keygen –t rsa
(2.)私钥留在本机,公钥发给其它主机(现在是localhost)。输入命令:
ssh--id localhost
(3.)使用公钥来登录输入命令:
ssh localhost
配置其它主机SSH免密登录
(1.)克隆两次。在VMware左侧栏中选中虚拟机右击,在弹出的快捷键菜单中选中管理---克隆命令。在克隆类型时选中“创建完整克隆”,单击“下一步”,按钮直到完成。
(2.)分别启动并进入三台虚拟机,使用ifconfig查询个主机IP地址。
(3.)修改每台主机的hostname及hosts文件。
步骤1:修改hostname,分别在各主机中输入命令。
Sudo gedit /etc/sysconfig/network
步骤2:修改hosts文件:
sudo gedit /etc/hosts
步骤3:修改三台虚拟机的IP
第一台对应node1虚拟机的IP:192.168.1.130
第二台对应node2虚拟机的IP:192.168.1.131
第三台对应node3虚拟机的IP:192.168.1.132
(4.)由于已经在node1上生成过密钥对,所有现在只要在node1上输入命令:
ssh--id node2
ssh--id node3
这样就可以将node1的公钥发布到node2,node3。
(5.)测试SSH,在node1上输入命令:
ssh node2
#退出登录
exit
ssh node3
exit
四:Hadoop完全分布式安装
1. Hadoop有三种运行方式:
(1.)单机模式:无须配置,Hadoop被视为一个非分布式模式运行的独立Java进程
(2.)伪分布式:只有一个节点的集群,这个节点即是Master(主节点,主服务器)也是Slave(从节点,从服务器),可在此单节点上以不同的java进程模拟分布式中的各类节点
(3.)完全分布式:对于Hadoop,不同的系统会有不同的节点划分方式。
2.安装Hadoop
(1.)获取Hadoop压缩包hadoop-2.6.0.tar.gz,下载后可以使用VMWare Tools通过共享文件夹,或者使用Xftp工具传到node1。进入node1 将压缩包解压到/home/hser目录下,输入命令:
#进入HOME目录即:“/home/hser”
cd ~
tar –zxvf hadoop-2.6.0.tar.gz
(2.)重命名hadoop输入命令:
mv hadoop-2.6.0 hadoop
(3.)配置Hadoop环境变量,输入命令:
Sudo gedit /etc/profile
将以下脚本加到profile内:
#hadoop
export HADOOP_HOME=/home/hser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
保存关闭,最后输入命令使配置生效
source /etc/profile
注:node2,和node3都要按照以上配置进行配置。
3.配置Hadoop
(1.)hadoop-env.sh文件用于指定JDK路径。输入命令:
[hser@node1 ~]$ cd ~/hadoop/etc/hadoop
[hser@node1 hadoop]$ gedit hadoop-env.sh
然后增加如下内容指定jDK路径。
export JAVA_HOME=/usr/java/jdk1.7.0_67
(2.)打开指定JDK路径,输入命令:
export JAVA_HOME=/usr/java/jdk1.7.0_67
(4.)core-site.xml:该文件是Hadoop全局配置,打开并在
8. 如何在linux脚本中执行hdfs命令
首先脚本需要有执行权限
chmod u+x file.sh
执行脚本有三种方法:
1. ./file.sh
特点:开启bash子进程来执行,也就是开启额外的进程来进行,不影响原进程的变量、配置等
2. bash file.sh
特点:和./file.sh相同
3. source file.sh 或者 . file.sh
特点:在原bash进程中执行脚本。
第三种方法主要用于在脚本中切换用户su、切换目录cd等命令。
source 和 . 命令是相同的。
你可以搜索 source
9. hdfs的高级命令行使用
在多人共用HDFS的环境下,配置设置非常重要。特别是在Hadoop处理大量资料的环境,如 果没有配额管理,很容易把所有的空间用完造成别人无法存取。Hdfs的配额设定是针对目录 而不是针对账号,可以 让每个账号仅操作某一个目录,然后对目录设置配置。
hdfs文件的限额配置允许我们以文件个数,或者文件大小来限制我们在某个目录下上传的文 件数量或者文件内容总量,以便达到我们类似网络网盘网盘等限制每个用户允许上传的最大 的文件的量。
注意,设置的配额最后只能上传N-1个文件,因为系统默认认为创建的文件夹已经为1个配额。
在设置空间配额时,设置的空间至少是 block_size * 3 大小
如果默认文件夹大小为128M那么要上传文件需要配置文件夹大小为128m * 3 = 384m大小。
清除空间配额限制
安全模式是hadoop的一种 保护机制 ,用于保证集群中的数据块的安全性。当集群启动的时候,会首先进入安全模式。当系统处于安全模式时会检查数据块的完整性。
假设我们设置的副本数(即参数dfs.replication)是3,那么在datanode上就应该有3个副本存 在,假设只存在2个副本,那么比例就是2/3=0.666。hdfs默认的副本率0.999。我们的副本率 0.666明显小于0.999,因此系统会自动的复制副本到其他dataNode,使得副本率不小于0.999。 如果系统中有5个副本,超过我们设定的3个副本,那么系统也会删除多于的2个副本。
在安全模式状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。 当整个系统达到安全标准时,HDFS自动离开安全模式。
安全模式操作命令
实际生产环境当中,hadoop的环境搭建完成之后,第一件事情就是进行压力测试,测试我们 的集群的读取和写入速度,测试我们的网络带宽是否足够等一些基准测试
向HDFS文件系统中写入数据,10个文件,每个文件10MB,文件存放到/benchmarks/TestDFSIO中
完成之后查看写入速度结果
这个结果也可以在网页端/benchmarks目录下查看
测试hdfs的读取文件性能,在HDFS文件系统中读入10个文件,每个文件10M
查看读取果
10. hadoop集群中hadoop需要启动哪些进程
启动Hadoop
启动Hadoop集群需要启动HDFS集群和Map/Rece集群。
格式化一个新的分布式文件系统:
$ bin/hadoop namenode -format
在分配的NameNode上,运行下面的命令启动HDFS:
$ bin/start-dfs.sh
bin/start-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动DataNode守护进程。
在分配的JobTracker上,运行下面的命令启动Map/Rece:
$ bin/start-mapred.sh
bin/start-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上启动TaskTracker守护进程。
-----来自官方文档