STORM入门之(集成HDFS)

来源:互联网 发布:mac导入照片不清晰 编辑:程序博客网 时间:2024/06/14 19:03

总体

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())


查询hdfs javademo

    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 成功