hadoop伪分布式
0:免密码登录
1:jdk环境变量
2:修改5个配置文件:
#修改hadoop的环境变量
hadoop-env.sh
1:exprot JAVA_HOME=(echo $JAVA_HOME)
core-site.xml:
<property>
<name>fs.defaultFS</name>#用来指定hdfs的namenode的地址
<value>hdfs://hostname:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop2.5/tmp</value>#指定hadoop运行时产生文件的存放路径,必须手动提前创建
</property>
hdfs-site.xml:
<property>
<name>dfs.replication</name>
<value>1</value>#指定副本的数量 伪分布式只有一个节点
</property>
mapred-site.xml
(官方没有给这个文件,但是给了例子文件,重命名复制一份即可)
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>#告诉hadoop,mr运行在yarn上。yarn是资源调度系统
</property>
yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>#nodemanager的获取方式是shuffle
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>#指定yarn的ResourceManager的地址
</property>
3:修改hadoop的环境变量
vim /ect/profile
export HADOOP_HOME=/home/hadoop-2.5
export PATH=
PATH:
HADOOP_HOME/sbin:$HADOOP_HOME/bin
source /ect/profile
4:初始化HDFS
#./hadoop namenode -format(过时了)
./hdfs namenode -format (第一次需要格式化)
5:启动验证hdfs
./start-all.sh
验证:
在本地的hosts文件已经要配置服务器的IP+主机名
http://ip:50070 (hdfs的管理界面)
http://ip:50030 (mr管理界面)
上传一个文件:
./hadoop fs -mkdir /test
./hadopp fs -put /etc/hosts hdfs://hadoop:9000/test
HIVE部署:
hive是为了给不会Java的人使用的,简化了开发mp的程度
下载地址:http://archive.apache.org/dist/hive/hive-0.13.1/
hive:解释器,编译器,优化器。相当于数据仓库,是hdfs的客户端
下载完后进行解压建立软连:
tar -zxvf apache-hive-0.13.1-bin.tar.gz
ln -sf ~/apache-hive-0.13.1-bin(当前目录) /home/hive-0.13
cd /home/hive-0.13/conf
cp hive-default.xml.template hive-site.xml
启动:
在bin目录启动
./hive
#hive数据库知识小插曲,hive包含三种数据语言定义:
DML(data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL(data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,
数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
CLI 命令行界面,也就是CLI,是和Hive交互的最常用的方式。使用CLI,用户可以创建表,检查模式以及查询表,等等。
HIVE运行时,其中的元数据是存储在关系型数据库中,由于官方不推荐使用自带的。我建议安装一个关系性数据库,MySQL
安装启动查看MySQL:
yum install mysql-server
service mysqld start
netstat -nplt|grep 3306
设置登录远程登录用户以及密码
mysql
grant all on *.* to root@'%' identified by '123456';
(*.*:所有的库,所有的表。%:任何地址)
grant all on *.* to root@'node1' identified by '123456';
(node:换成你的主机名)
创建数据库
create database hive;
把给你的mysql-jdbc的数据库驱动包放到hive/lib下
修改hive-site的配置文件
#这个属性是hive连接数据库的驱动,
#修改连接数据库的地址,官方是如下:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
修改为:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1/hive</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
#修改数据库连接驱动名字
官方:
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
修改后:
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
#连接数据库的用户名密码
#官方:
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>APP</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mine</value>
<description>password to use against metastore database</description>
</property>
#修改后
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
启动hive:
./hive
(常识:hive
mysql中存储的是映射数据,是元数据)
测试hive:
在hive创建表
create table t_test(
id int,
name string,
age int
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’;
测试数据:
1,XiaoChong,24
2,TianQing,24
3,Hadoop,24
4,Hive,24