1 wordcount
启动hadoop
进入hadoop安装目录
cd /usr/local/hadoop
输入命令 hadoop fs -mkdir /input
用命令看:$hadoop fs -ls /
创建input目录是否成功
我们将LICENSE.txt放到input目录下
hadoop fs -put LICENSE.txt /input
可以通过命令hadoop fs -ls /input看到license.txt已经存在input目录下了
接下来只需要将/input通过hadoop自带示例程序wordcount计算出其中各字母出现的次数便可
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.2.jar wordcount/input/output
通过命令hadoop fs -ls /看出,HDFS系统下多了个/output 和/tmp目录。打开/output目录可以看到下面有两个文件
wordcount实验参考
mapreduce实验编程
下载hadoop-streaming最新版本
hadoop-streaming下载地址
hadooop-streaming是一个框架,可以让任何语言编写的mr程序都能在hadoop上运行,只需要遵循标准输入stdin输出stdout即可。
先写一个map.py
#!/usr/bin/env python
import sys
for line in sys.stdin:
line=line.strip()
words=line.split()
for word in words:
print '%s\t%s' %(word,1)
随便写一个测试文件 word.txt
张三 李四
黄二 小牛
张三 小牛
李四 黄一
然后使用以下命令,体会一下map过程
接着我们写一个简单的red.py体验一下reduce过程
#!/usr/bin/env python
import sys
current_word=None
current_count=0
word=None
for line in sys.stdin:
line=line.strip()
word,count=line.split('\t',1)
try:
count=int(count)
except:
continue
if current_word == word:
current_count+=count
else:
if current_word:
print '%s\t%s' %(current_word,current_count)
current_word=word
current_count=count
if current_word==word:
print '%s\t%s' %(current_word,current_count)
执行
cat word.txt | python map.py | sort -k 1 | python red.py
一个简单的wordcount就这么写好啦~
那么怎么才能提交python编写的mr程序给hadoop
hbase
hbase
hbase稳定版
tar -zxvf hbase-1.4.8.tar.gz
mv hbase-1.4.8 /usr/local/hadoop/hbase
配置hbase
gedit ~/.bashrc
添加
使配置生效
source ~/.bashrc
一.修改hbase-env.sh
cd /usr/local/hadoop/hbase/conf
gedit hbase-env.sh
修改 hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/usr/local/hadoop/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hadoop/hbase/zookeeper</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
</configuration>
把配置好的hbase传到各节点
scp -r /usr/local/hadoop/hbase hadoop@slave1:/usr/local/hadoop/
修改子节点的./bashrc配置文件
添加
使配置生效
source ~/.bashrc
https://www.cnblogs.com/zyrblog/p/8544114.html
master启动dfs和hbase
cd /usr/local/hadoop/
./sbin/start-dfs.sh
cd /usr/local/hadoop/hbase
./bin/start-hbase.sh
jps查看
slave1查看
web浏览器查看master:16010
hbase shell
创建一个名为 test 的表,这个表只有一个column family 为 cf
分别插入了3行。第一个行key为row1, 列为 cf:a, 值是 value1。Hbase中的列是由 column family前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是a.
Scan这个表
Get一行
disable 再 drop 这张表,可以清除你刚刚的操作
hbase(main):012:0> disable 'test'
0 row(s) in 1.0930 seconds
hbase(main):013:0> drop 'test'
0 row(s) in 0.0770 seconds
关闭shell
hbase(main):014:0> exit
运行停止脚本来停止HBase.
./bin/stop-hbase.sh
hive
1 安装mysql
安装
sudo apt-get install mysql-server mysql-client
进入mysql
mysql -u root -p
创建hive数据库
create database hive;
Ubuntu 16.04 设置MySQL远程访问权限
下载hive安装包
hive安装包
安装
tar -zxvf apache-hive-2.3.4-bin.tar.gz
mv apache-hive-2.3.4-bin /usr/local/hadoop/hive
修改环境变量
gedit ~/.bashrc
添加
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$PATH:$HIVE_HOME/bin
使配置生效
source ~/.bashrc
下载mysql jdbc 包
jar包下载地址
下载方法
tar -zxvf mysql-connector-java-8.0.13.tar.gz
将mysql-connector-java-8.0.13.jar 拷贝到 /usr/local/hadoop/hive
创建HDFS目录
在 Hive 中创建表之前需要创建以下 HDFS 目录并给它们赋相应的权限
hdfs dfs -mkdir -p /root/hive/warehouse
hdfs dfs -mkdir -p /root/hive/tmp
hdfs dfs -mkdir -p /root/hive/log
hdfs dfs -chmod g+w /root/hive/warehouse
hdfs dfs -chmod g+w /root/hive/tmp
hdfs dfs -chmod g+w /root/hive/log
参考
配置
cd /usr/local/hadoop/hive/conf/
创建hive-site.xml
touch hive-site.xml
赋权
chmod 777 hive-site.xml
vi hive-site.xml
修改hive-site.xml
<configuration>
<!-- 指定HDFS中的hive仓库地址 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/root/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/root/hive/tmp</value>
</property>
<!-- 该属性为空表示嵌入模式或本地模式,否则为远程模式 -->
<property>
<name>hive.metastore.uris</name>
<value></value>
</property>
<!-- 指定mysql的连接 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!-- 指定驱动类 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 指定用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- 指定密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description>
</description>
</property>
</configuration>
修改 hive-env.sh
cp hive-env.sh.template hive-env.sh
添加
HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib
初始化
cd /usr/local/hadoop/hive/bin
./schematool -initSchema -dbType mysql
启动hive
启动hive之前,请先启动hadoop集群
1. cd /usr/local/hadoop
2. ./sbin/start-all.sh
3. cd /usr/local/hadoop/hive
4. ./bin/hive
创建数据库
create database myhive;
使用数据库
use myhive;
创建表
create table test (id int,name string);
插入数据
insert into test values(1,"jsljfg");
参考 1 参考 2参考 3