总体
Storm集成hdfs需要做前期工作
1.hadoop单机版安装
2.自己写hdfs demo 查看是否写入成功
首先让我们来安装hadoop
版本:hadoop-2.6.5.tar
jdk:1.7
Hadoop部分
(1)hadoop配置文件修改
core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/soc/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.176.63.105:9000</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/soc/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/soc/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
(2)hadoop用户免密码操作:http://blog.csdn.net/yl3395017/article/details/78496979
(3)hadoop-native-64-2.6.0.tar增加解压后的文件放入到hadoop-2.6.5/lib
(4)如果在windows平台调用centos平台的hadoop ,需要在system32下加入hadoop2.6(x64)V0.2.zip中的hadoop.dll 否则会报错
(5)别忘记修改目录权限
(6)启动namenode datanode secondnamenode 脚本在hadoop-2.6.5/bin 或者是/sbin下
./start-dfs.sh
./stop-dfs.sh
(7)jps查看是否启动 namenode datanode secondnamenode 如果报错 需要查看hadoop日志
STROM部分
bolt构建
private static HdfsBolt HdfsConfig(){
// 输出字段分隔符
RecordFormat format = new DelimitedRecordFormat().withFieldDelimiter("|");
// 每1000个tuple同步到HDFS一次
SyncPolicy syncPolicy = new CountSyncPolicy(1000);
// 每个写出文件的大小为100MB
FileRotationPolicy rotationPolicy = new FileSizeRotationPolicy(100.0f, FileSizeRotationPolicy.Units.MB);
// 设置输出目录
FileNameFormat fileNameFormat = new DefaultFileNameFormat().withPath("/soc/hadoop/tmp/dfs/data");
// 执行HDFS地址
HdfsBolt hdfsBolt = new HdfsBolt()
.withFsUrl("hdfs://10.176.63.105:9000")
.withFileNameFormat(fileNameFormat)
.withRecordFormat(format)
.withRotationPolicy(rotationPolicy)
.withSyncPolicy(syncPolicy);
return hdfsBolt;
}
Toplogy构建方式
builder.setBolt("Hdfs", HdfsConfig())
public static void ReadFile() throws Exception {
String uri = "hdfs://10.176.63.105:9000/soc/hadoop/tmp/dfs/data/Hdfs-1-0-1510634654752.txt";
Configuration conf = new Configuration();
FileSystem fs = FileSystem. get(URI.create (uri), conf);
InputStream in = null;
try {
in = fs.open( new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
具体的hadoop详情可以在 http://localhost:50070 查看
注意 localhost改为你自己的hadoop服务器
结果
启动storm入库生成hdfs文件成功
通过demo查询 hdfs 成功