<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.iiis.systems:9988/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chentianjia</id>
		<title>IIIS-Systems - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.iiis.systems:9988/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chentianjia"/>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php/Special:Contributions/Chentianjia"/>
		<updated>2026-05-17T14:29:28Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.0-rc.1</generator>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=702</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=702"/>
				<updated>2018-01-25T12:47:11Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想上传数据到Alluxio内存中 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想上传数据到Alluxio内存中 ==&lt;br /&gt;
首先把数据复制到&lt;br /&gt;
    mount -t nfs 10.1.0.180:/mnt/data /mnt/data&lt;br /&gt;
    /mnt/data&lt;br /&gt;
然后用&lt;br /&gt;
    ./mesos/alluxio-1.5.0/bin/alluxio fs ls /&lt;br /&gt;
&lt;br /&gt;
查看是否添加上去，复制完到Alluxio能读到一般需要一段时间请耐心等待。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio fs load  /XXX.txt把文件加载到内存中，15G文件一般要加载一分多钟。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio fs ls /XXX.txt就可以看到该文件In Memory。&lt;br /&gt;
&lt;br /&gt;
你可以简单的执行&lt;br /&gt;
    ./mesos/alluxio-1.5.0/bin/alluxio fs cat /XXX.txt | grep -c 0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
需要先pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=701</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=701"/>
				<updated>2018-01-10T08:27:19Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想上传数据到Alluxio内存中 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想上传数据到Alluxio内存中 ==&lt;br /&gt;
首先把数据复制到&lt;br /&gt;
    /mnt/data&lt;br /&gt;
然后用&lt;br /&gt;
    ./mesos/alluxio-1.5.0/bin/alluxio fs ls /&lt;br /&gt;
&lt;br /&gt;
查看是否添加上去，复制完到Alluxio能读到一般需要一段时间请耐心等待。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio fs load  /XXX.txt把文件加载到内存中，15G文件一般要加载一分多钟。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio fs ls /XXX.txt就可以看到该文件In Memory。&lt;br /&gt;
&lt;br /&gt;
你可以简单的执行&lt;br /&gt;
    ./mesos/alluxio-1.5.0/bin/alluxio fs cat /XXX.txt | grep -c 0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
需要先pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=700</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=700"/>
				<updated>2018-01-10T08:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想上传数据到Alluxio内存中 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想上传数据到Alluxio内存中 ==&lt;br /&gt;
首先把数据复制到&lt;br /&gt;
    /mnt/data&lt;br /&gt;
然后用&lt;br /&gt;
    ./mesos/alluxio-1.5.0/bin/alluxio fs ls /&lt;br /&gt;
查看是否添加上去，复制完到Alluxio能读到一般需要一段时间请耐心等待。&lt;br /&gt;
&lt;br /&gt;
./bin/alluxio fs load  /XXX.txt把文件加载到内存中，15G文件一般要加载一分多钟。&lt;br /&gt;
&lt;br /&gt;
然后./bin/alluxio fs ls /XXX.txt就可以看到该文件In Memory。&lt;br /&gt;
&lt;br /&gt;
你可以简单的执行./mesos/alluxio-1.5.0/bin/alluxio fs cat /XXX.txt | grep -c 0查看结果。&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
需要先pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=699</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=699"/>
				<updated>2018-01-10T08:25:41Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想上传数据到Alluxio内存中 ==&lt;br /&gt;
首先把数据复制到/mnt/data中，然后用./mesos/alluxio-1.5.0/bin/alluxio fs ls /查看是否添加上去，复制完到Alluxio能读到一般需要一段时间请耐心等待。&lt;br /&gt;
&lt;br /&gt;
./bin/alluxio fs load  /XXX.txt把文件加载到内存中，15G文件一般要加载一分多钟。&lt;br /&gt;
&lt;br /&gt;
然后./bin/alluxio fs ls /XXX.txt就可以看到该文件In Memory。&lt;br /&gt;
&lt;br /&gt;
你可以简单的执行./mesos/alluxio-1.5.0/bin/alluxio fs cat /XXX.txt | grep -c 0查看结果。&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
需要先pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=698</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=698"/>
				<updated>2017-11-21T07:17:48Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用Python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
需要先pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=697</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=697"/>
				<updated>2017-11-21T07:17:26Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
需要先pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    client = alluxio.Client('10.1.0.180', 39999)&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=696</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=696"/>
				<updated>2017-11-21T06:45:11Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
需要先pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=695</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=695"/>
				<updated>2017-11-21T06:21:44Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用Tensorflow运行分布式GPU运算 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=694</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=694"/>
				<updated>2017-11-21T06:20:11Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的安装操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动&lt;br /&gt;
&lt;br /&gt;
然后修改vim /etc/profile&lt;br /&gt;
&lt;br /&gt;
    export JAVA_HOME=/usr/lib/jvm/java&lt;br /&gt;
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar&lt;br /&gt;
    export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
    export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin&lt;br /&gt;
    export HADOOP_HOME=/usr/local/hadoop &lt;br /&gt;
    export HADOOP_INSTALL=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_MAPRED_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_HDFS_HOME=$HADOOP_HOME&lt;br /&gt;
    export YARN_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native&lt;br /&gt;
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin&lt;br /&gt;
&lt;br /&gt;
记得source /etc/profile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的网络操作 ==&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，ifcfg-enp3s0f0是网卡mac地址，请在这个表格里面看还剩下什么IP地址。&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/spreadsheets/d/1_nia7F0xqIrlIsPpR5ZCayH9CaA9wA38KXObR_WVMwo/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址，ifcfg-enp3s0f0是网卡mac地址&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1bOm2wm&lt;br /&gt;
&lt;br /&gt;
密码&lt;br /&gt;
&lt;br /&gt;
[[Image:key1.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
= 在Master中修改Alluxio配置 =&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 安装Alluxio与Hadoop =&lt;br /&gt;
&lt;br /&gt;
    mkdir mesos&lt;br /&gt;
    cd mesos&lt;br /&gt;
    scp -r root@10.1.0.180:/root/mesos/alluxio-1.5.0 .&lt;br /&gt;
    scp -r root@10.1.0.180:/usr/local/hadoop /usr/local&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=693</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=693"/>
				<updated>2017-11-20T12:56:55Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的安装操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动&lt;br /&gt;
&lt;br /&gt;
然后修改vim /etc/profile&lt;br /&gt;
&lt;br /&gt;
    export JAVA_HOME=/usr/lib/jvm/java&lt;br /&gt;
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar&lt;br /&gt;
    export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
    export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin&lt;br /&gt;
    export HADOOP_HOME=/usr/local/hadoop &lt;br /&gt;
    export HADOOP_INSTALL=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_MAPRED_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_HDFS_HOME=$HADOOP_HOME&lt;br /&gt;
    export YARN_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native&lt;br /&gt;
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin&lt;br /&gt;
&lt;br /&gt;
记得source /etc/profile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的网络操作 ==&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，ifcfg-enp3s0f0是网卡mac地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1boIeM0B 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址，ifcfg-enp3s0f0是网卡mac地址&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1bOm2wm&lt;br /&gt;
&lt;br /&gt;
密码&lt;br /&gt;
&lt;br /&gt;
[[Image:key1.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
= 在Master中修改Alluxio配置 =&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 安装Alluxio与Hadoop =&lt;br /&gt;
&lt;br /&gt;
    mkdir mesos&lt;br /&gt;
    cd mesos&lt;br /&gt;
    scp -r root@10.1.0.180:/root/mesos/alluxio-1.5.0 .&lt;br /&gt;
    scp -r root@10.1.0.180:/usr/local/hadoop /usr/local&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=692</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=692"/>
				<updated>2017-11-20T12:33:09Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动&lt;br /&gt;
&lt;br /&gt;
然后修改vim /etc/profile&lt;br /&gt;
&lt;br /&gt;
    export JAVA_HOME=/usr/lib/jvm/java&lt;br /&gt;
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar&lt;br /&gt;
    export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
    export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin&lt;br /&gt;
    export HADOOP_HOME=/usr/local/hadoop &lt;br /&gt;
    export HADOOP_INSTALL=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_MAPRED_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_HDFS_HOME=$HADOOP_HOME&lt;br /&gt;
    export YARN_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native&lt;br /&gt;
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin&lt;br /&gt;
&lt;br /&gt;
记得source /etc/profile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1boIeM0B 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1bOm2wm&lt;br /&gt;
&lt;br /&gt;
密码&lt;br /&gt;
&lt;br /&gt;
[[Image:key1.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=691</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=691"/>
				<updated>2017-11-20T12:32:38Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动&lt;br /&gt;
&lt;br /&gt;
然后修改profile&lt;br /&gt;
&lt;br /&gt;
    export JAVA_HOME=/usr/lib/jvm/java&lt;br /&gt;
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar&lt;br /&gt;
    export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
    export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin&lt;br /&gt;
    export HADOOP_HOME=/usr/local/hadoop &lt;br /&gt;
    export HADOOP_INSTALL=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_MAPRED_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_HDFS_HOME=$HADOOP_HOME&lt;br /&gt;
    export YARN_HOME=$HADOOP_HOME&lt;br /&gt;
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native&lt;br /&gt;
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1boIeM0B 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1bOm2wm&lt;br /&gt;
&lt;br /&gt;
密码&lt;br /&gt;
&lt;br /&gt;
[[Image:key1.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=690</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=690"/>
				<updated>2017-11-20T12:32:14Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动&lt;br /&gt;
&lt;br /&gt;
然后修改profile&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/java&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin&lt;br /&gt;
export HADOOP_HOME=/usr/local/hadoop &lt;br /&gt;
export HADOOP_INSTALL=$HADOOP_HOME&lt;br /&gt;
export HADOOP_MAPRED_HOME=$HADOOP_HOME&lt;br /&gt;
export HADOOP_COMMON_HOME=$HADOOP_HOME&lt;br /&gt;
export HADOOP_HDFS_HOME=$HADOOP_HOME&lt;br /&gt;
export YARN_HOME=$HADOOP_HOME&lt;br /&gt;
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native&lt;br /&gt;
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1boIeM0B 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1bOm2wm&lt;br /&gt;
&lt;br /&gt;
密码&lt;br /&gt;
&lt;br /&gt;
[[Image:key1.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=689</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=689"/>
				<updated>2017-11-20T12:30:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1boIeM0B 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1bOm2wm&lt;br /&gt;
&lt;br /&gt;
密码&lt;br /&gt;
&lt;br /&gt;
[[Image:key1.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=688</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=688"/>
				<updated>2017-11-20T12:28:03Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用Tensorflow运行分布式GPU运算 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1boIeM0B 密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
如果你修改了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki。&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=File:Key.png&amp;diff=687</id>
		<title>File:Key.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=File:Key.png&amp;diff=687"/>
				<updated>2017-11-20T12:27:25Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=File:Key1.png&amp;diff=686</id>
		<title>File:Key1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=File:Key1.png&amp;diff=686"/>
				<updated>2017-11-20T12:21:50Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=685</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=685"/>
				<updated>2017-11-20T12:19:34Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1bOm2wm&lt;br /&gt;
&lt;br /&gt;
密码&lt;br /&gt;
&lt;br /&gt;
[[Image:key1.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=684</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=684"/>
				<updated>2017-11-20T12:15:08Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
需要添加的hosts&lt;br /&gt;
&lt;br /&gt;
10.1.1.1 srymaster1&lt;br /&gt;
10.1.1.2 srymaster2&lt;br /&gt;
10.1.1.3 srymaster3&lt;br /&gt;
10.1.0.150 sryslave1&lt;br /&gt;
10.1.0.156 sryslave2&lt;br /&gt;
10.1.0.157 sryslave3&lt;br /&gt;
10.1.0.158 sryslave4&lt;br /&gt;
10.1.0.159 sryslave5&lt;br /&gt;
10.1.0.160 sryslave6&lt;br /&gt;
10.1.0.161 sryslave7&lt;br /&gt;
10.1.0.162 sryslave8&lt;br /&gt;
10.1.0.163 sryslave9&lt;br /&gt;
10.1.0.165 sryslave11&lt;br /&gt;
10.1.0.168 sryslave12&lt;br /&gt;
10.1.0.169 sryslave13&lt;br /&gt;
10.1.0.170 sryslave14&lt;br /&gt;
10.1.0.171 sryslave15&lt;br /&gt;
10.1.0.172 sryslave16&lt;br /&gt;
10.1.0.175 sryslave17&lt;br /&gt;
10.1.0.176 sryslave18&lt;br /&gt;
10.1.0.177 sryslave19&lt;br /&gt;
10.1.0.178 sryslave20&lt;br /&gt;
10.1.0.179 sryslave21&lt;br /&gt;
10.1.0.164 sryslave10&lt;br /&gt;
10.1.0.180 sryslave22&lt;br /&gt;
10.1.0.173 sryslave23&lt;br /&gt;
10.1.0.141 sryslave24&lt;br /&gt;
10.1.0.140 sryslave25&lt;br /&gt;
10.1.0.139 sryslave26&lt;br /&gt;
10.1.0.143 sryslave27&lt;br /&gt;
10.1.0.138 sryslave28&lt;br /&gt;
10.1.0.136 sryslave29&lt;br /&gt;
10.1.0.137 sryslave30&lt;br /&gt;
10.1.0.200 sryslave31&lt;br /&gt;
10.1.1.4 logserver&lt;br /&gt;
10.10.0.1  node-1  node-1.domain.tld&lt;br /&gt;
10.10.0.2  node-2  node-2.domain.tld&lt;br /&gt;
10.10.0.3  node-3  node-3.domain.tld&lt;br /&gt;
10.10.0.4  node-4  node-4.domain.tld&lt;br /&gt;
10.10.0.5  node-5  node-5.domain.tld&lt;br /&gt;
10.10.0.6  node-6  node-6.domain.tld&lt;br /&gt;
10.10.0.7  node-7  node-7.domain.tld&lt;br /&gt;
10.10.0.8  node-8  node-8.domain.tld&lt;br /&gt;
10.10.0.9  node-9  node-9.domain.tld&lt;br /&gt;
10.10.0.10  node-10  node-10.domain.tld&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=File:Port.jpg&amp;diff=683</id>
		<title>File:Port.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=File:Port.jpg&amp;diff=683"/>
				<updated>2017-11-20T12:10:59Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=682</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=682"/>
				<updated>2017-11-20T12:10:35Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对于一台新的物理机加到集群中 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.jpg]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=681</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=681"/>
				<updated>2017-11-20T12:03:49Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
需要打开的端口&lt;br /&gt;
&lt;br /&gt;
[[Image:port.png]]&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=680</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=680"/>
				<updated>2017-11-20T11:56:33Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 在Master中修改Alluxio配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master (10.1.0.180)中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=679</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=679"/>
				<updated>2017-11-20T11:56:04Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 在Master中修改Alluxio配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=678</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=678"/>
				<updated>2017-11-20T11:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 在Master中修改Alluxio配置 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-stop.sh all&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio format&lt;br /&gt;
&lt;br /&gt;
    ./bin/alluxio-start.sh all Mount&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=677</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=677"/>
				<updated>2017-11-20T11:50:40Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录&lt;br /&gt;
 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=676</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=676"/>
				<updated>2017-11-20T11:50:25Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对于一台新的物理机加到集群中 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
&lt;br /&gt;
2) 点击student&lt;br /&gt;
&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=675</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=675"/>
				<updated>2017-11-20T11:49:56Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 对新的物理机的操作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先你需要安装Java7或者8，安装nvidia驱动，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把物理机加入到Docker集群中&lt;br /&gt;
&lt;br /&gt;
    ssh root@10.1.1.4&lt;br /&gt;
    cd /data/offlinesry/ansible&lt;br /&gt;
    ./add_slave  主机名  mesos&lt;br /&gt;
&lt;br /&gt;
然后在网页以管理者身份登录 &lt;br /&gt;
1) http://10.1.1.1:81/ui/auth/login  &lt;br /&gt;
2) 点击student&lt;br /&gt;
3）添加主机把物理机加入到集群&lt;br /&gt;
&lt;br /&gt;
首先需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=OpenStack_User_Guide&amp;diff=674</id>
		<title>OpenStack User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=OpenStack_User_Guide&amp;diff=674"/>
				<updated>2017-11-20T09:05:37Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;清华大学交叉信息研究院OpenStack用户操作指南&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
= 申请集群资源 =&lt;br /&gt;
&lt;br /&gt;
OpenStack是一个开源的云计算管理平台项目，旨在为公共云及私有云的建设与管理提供所需的软件，实现计算资源、网络资源、存储资源的共享。 清华大学交叉信息研究院使用OpenStack为用户提供计算资源。&lt;br /&gt;
&lt;br /&gt;
需要使用集群资源的用户，请向集群管理员尹伟老师提交资源使用申请。提交申请的邮箱为：yw@mail.tsinghua.edu.cn &lt;br /&gt;
&lt;br /&gt;
提交的信息包括： &lt;br /&gt;
&lt;br /&gt;
1）账号名（系统会随机生成密码，用户登录系统后，可以自行修改密码） &lt;br /&gt;
&lt;br /&gt;
2）email&lt;br /&gt;
&lt;br /&gt;
3）手机号 &lt;br /&gt;
&lt;br /&gt;
4）申请资源的理由 &lt;br /&gt;
&lt;br /&gt;
5）资源使用期限 &lt;br /&gt;
&lt;br /&gt;
6）IIIS账号支持人的姓名 （学生请填写导师姓名，院外人员请填写IIIS联系人的信息。）&lt;br /&gt;
&lt;br /&gt;
= 使用集群资源 =	&lt;br /&gt;
&lt;br /&gt;
用户使用集群资源，需要先通过VPN连接集群网络，然后通过OpenStack使用集群资源。详细配置及操作，如下：&lt;br /&gt;
&lt;br /&gt;
== VPN配置及使用 ==&lt;br /&gt;
&lt;br /&gt;
=== VPN介绍 ===&lt;br /&gt;
&lt;br /&gt;
为了便于用户访问集群，并提高其安全性，我们提供了VPN访问。如果用户在集群中建立了虚拟机，希望在客户端机器上访问虚拟机（比如ping、ssh等），则需要建立VPN连接。&lt;br /&gt;
&lt;br /&gt;
=== VPN配置 ===&lt;br /&gt;
&lt;br /&gt;
对于VPN的具体配置，分两种情形：Windows系统上配置VPN、MAC系统上配置VPN。&lt;br /&gt;
&lt;br /&gt;
1&amp;gt;Windows系统上配置VPN&lt;br /&gt;
&lt;br /&gt;
如果你使用的是Windows 10系统，请按照下面的链接自行修改。&lt;br /&gt;
&lt;br /&gt;
http://blog.csdn.net/lc_1994/article/details/50662909&lt;br /&gt;
&lt;br /&gt;
用户先要确认Windows系统是32位系统，还是64位系统。基于此，安装相应的Cisco Vpn Client软件。&lt;br /&gt;
&lt;br /&gt;
64位Windows系统对应的Cisco Vpn Client软件下载地址为：&lt;br /&gt;
&lt;br /&gt;
http://pan.baidu.com/s/1skkBr5N&lt;br /&gt;
&lt;br /&gt;
安装后，运行该软件。单击主界面上的“NEW”按钮，新建VPN连接，界面如图。&lt;br /&gt;
&lt;br /&gt;
[[Image:1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Connection Entry为VPN连接名。用户自己命名。&lt;br /&gt;
&lt;br /&gt;
Description为描述信息，可不填写。&lt;br /&gt;
&lt;br /&gt;
Host为VPN服务器地址，填写gw.iiis.co。如果你在校内，可以尝试使用thu.iiis.co （不能在校外访问，可能有些校内网段不行。）&lt;br /&gt;
&lt;br /&gt;
Group Authentication下的Name栏填写test；Password栏填写123456。&lt;br /&gt;
&lt;br /&gt;
配置完成后的界面，单击Save保存。&lt;br /&gt;
&lt;br /&gt;
双击刚刚建立的连接，会出现用户名和密码的输入界面，在该界面下，输入用户的VPN帐号和密码，即可连接成功，如图。&lt;br /&gt;
&lt;br /&gt;
[[Image:2.jpg]]&lt;br /&gt;
&lt;br /&gt;
2&amp;gt;MAC系统上配置VPN&lt;br /&gt;
&lt;br /&gt;
安装MAC系统的客户机，无需安装第三方软件。利用系统自带的VPN组件，即可建立VPN连接。具体操作如下：&lt;br /&gt;
&lt;br /&gt;
打开“网络偏好设置”，建立一个新的VPN连接，配置如图。接口选择VPN；VPN类型选择Cisco IPSec；服务器名称，用户自定义设置。&lt;br /&gt;
&lt;br /&gt;
[[Image:3.jpg]]&lt;br /&gt;
&lt;br /&gt;
单击“鉴定设置”，设置共享的密钥为123456，群组名称为test，如图&lt;br /&gt;
&lt;br /&gt;
[[Image:4.jpg]]&lt;br /&gt;
&lt;br /&gt;
设置完成后，连接VPN，会出现用户名和密码的输入界面，如下图。在该界面下，输入用户的VPN帐号和密码，即可连接成功。&lt;br /&gt;
&lt;br /&gt;
[[Image:20.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== VPN的常见故障及解决办法 ===&lt;br /&gt;
&lt;br /&gt;
3）VPN的常见故障及解决办法&lt;br /&gt;
&lt;br /&gt;
1&amp;gt;如果无法连接VPN，一般的排除办法如下：&lt;br /&gt;
&lt;br /&gt;
•测试客户机与VPN服务器之间的网络连通性： ping  gw.iiis.co。&lt;br /&gt;
&lt;br /&gt;
•查看客户机的防火墙及安全策略。&lt;br /&gt;
&lt;br /&gt;
2&amp;gt;如果能够出现用户名和密码输入界面，但无法连接成功。说明用户名和密码的输入有误，请仔细核查。&lt;br /&gt;
&lt;br /&gt;
重要提示：如果用户无法解决VPN连接故障，可以联系集群管理员尹伟老师，邮箱是：yw@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
== OpenStack基本操作 ==&lt;br /&gt;
&lt;br /&gt;
=== OpenStack访问方式 ===&lt;br /&gt;
1）OpenStack访问方式&lt;br /&gt;
&lt;br /&gt;
通过URL访问OpenStack，URL为： cloud.iiis.systems:9988   ，其界面如图。&lt;br /&gt;
&lt;br /&gt;
[[image:5.jpg]]&lt;br /&gt;
&lt;br /&gt;
使用之前申请的用户邮箱和密码登录。登录成功后，进入用户操作界面，见图。&lt;br /&gt;
&lt;br /&gt;
[[image:7.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== 启动虚拟机的过程 ===&lt;br /&gt;
&lt;br /&gt;
1&amp;gt;单击左侧导航栏中的“云主机”，再单击“创建云主机”。&lt;br /&gt;
&lt;br /&gt;
[[image:7.png]]&lt;br /&gt;
&lt;br /&gt;
2&amp;gt;选择启动源：填写云主机名称和数量。单击镜像右侧的+号，选择镜像。&lt;br /&gt;
&lt;br /&gt;
[[image:8.png]]&lt;br /&gt;
&lt;br /&gt;
3&amp;gt;配置：通过输入cpu核数、内存容量、磁盘容量，来检索对应配置的flavor。比如建立4核CPU、16G内存，60G磁盘的VM，则输入4-16384-60，会检索出对应的flavor，单击flavor右侧的+号，添加配置。如下图：&lt;br /&gt;
&lt;br /&gt;
[[image:tupeizhi.jpg]]&lt;br /&gt;
&lt;br /&gt;
4&amp;gt;网络：单击网络界面右侧的+号，添加网络。&lt;br /&gt;
&lt;br /&gt;
[[image:11.png]]&lt;br /&gt;
&lt;br /&gt;
5&amp;gt;安全组：默认的安全组为default。&lt;br /&gt;
&lt;br /&gt;
[[image:12.png]]&lt;br /&gt;
&lt;br /&gt;
单击default左侧的符号 &amp;gt; ，便可以查看default安全组中的安全策略。如果无法执行ping操作或ssh操作，则确认default安全组中是否存在对应的安全策略。&lt;br /&gt;
&lt;br /&gt;
[[image:13.png]]&lt;br /&gt;
&lt;br /&gt;
6&amp;gt;密码与密钥对：创建登录操作系统所需的密码或密钥。&lt;br /&gt;
&lt;br /&gt;
[[image:14.png]]&lt;br /&gt;
&lt;br /&gt;
如果用户希望以用户名和密码的方式登录OS，则在该界面直接设置管理员的密码，建立虚拟机之后，用户可以用管理员（比如root）和该密码登录OS。&lt;br /&gt;
&lt;br /&gt;
如果用户希望以密钥的方式登录OS，以前没有密钥，则单击“创建密钥对”按钮，创建密钥对。创建密钥对界面如下图。请把私钥的内容复制--粘帖到客户机的文件中，把文件命名为id_rsa，把文件权限设置为400，命令是chmod 400 id_rsa 。注意：只有在生成密钥对时，才允许用上述方法保存私钥内容，系统不提供私钥下载按钮。&lt;br /&gt;
&lt;br /&gt;
[[image:14.jpg]]&lt;br /&gt;
&lt;br /&gt;
请把&lt;br /&gt;
&lt;br /&gt;
如以前有密钥，则单击“导入密钥对”按钮，导入密钥。&lt;br /&gt;
&lt;br /&gt;
如果当前存在可用密钥，则需要单击密钥右侧的+号，加载该密钥。&lt;br /&gt;
&lt;br /&gt;
[[image:12.jpg]]&lt;br /&gt;
&lt;br /&gt;
7&amp;gt;虚拟机的状态如图。&lt;br /&gt;
&lt;br /&gt;
[[image:15.jpg]]&lt;br /&gt;
&lt;br /&gt;
8&amp;gt;如果用户希望通过外网访问虚拟机（比如在客户端机器上，通过ssh访问虚拟机），则要为虚拟机捆绑公网IP（Floating IP）。先单击左侧导航栏中的“公网IP”，再单击“为项目申请IP”，在资源池中选择“public_net”然后单击“分配IP”，即可获得公网IP地址。&lt;br /&gt;
&lt;br /&gt;
[[image:16.png]]&lt;br /&gt;
&lt;br /&gt;
获得公网IP地址后，把该公网IP地址捆绑在虚拟机上。具体操作为：单击左侧导航栏中的“云主机”，勾选需要捆绑公网IP的虚拟机，单击“更多”下拉菜单，选中“捆绑公网IP”。&lt;br /&gt;
&lt;br /&gt;
[[image:17.png]]&lt;br /&gt;
&lt;br /&gt;
=== 虚拟机访问方式 ===&lt;br /&gt;
&lt;br /&gt;
虚拟机的访问方式有三种：&lt;br /&gt;
&lt;br /&gt;
通过Console进行访问。&lt;br /&gt;
&lt;br /&gt;
通过SSH进行访问。&lt;br /&gt;
&lt;br /&gt;
通过公有IP地址直接访问。&lt;br /&gt;
&lt;br /&gt;
=== 通过console进行访问 ===&lt;br /&gt;
&lt;br /&gt;
勾选云主机，单击云主机的名称。在属性界面中，单击console选项卡。&lt;br /&gt;
&lt;br /&gt;
[[image:18.jpg]]&lt;br /&gt;
&lt;br /&gt;
在Console控制台上，出现虚拟机的OS信息。可以通过该界面登录OS。&lt;br /&gt;
&lt;br /&gt;
[[image:19.png]]&lt;br /&gt;
&lt;br /&gt;
=== 通过SSH进行访问 ===&lt;br /&gt;
&lt;br /&gt;
通过SSH连接虚拟机的公网 IP。该访问方式，需要用户先通过VPN的帐号和密码，建立VPN连接，然后在客户机上通过SSH访问虚拟机。&lt;br /&gt;
&lt;br /&gt;
如果创建虚拟机时，在“密码与密钥对”界面，用户输入了管理员的密码，则可以使用“ssh  用户名@虚拟机的公网IP”命令访问虚拟机。&lt;br /&gt;
&lt;br /&gt;
如果创建虚拟机时，在“密码与密钥对”界面，用户建立或导入或使用现有的密钥对，则可以使用“ssh -i id_rsa 用户名@虚拟机的公网IP”命令访问虚拟机。&lt;br /&gt;
&lt;br /&gt;
=== 通过公有IP地址直接访问 ===&lt;br /&gt;
&lt;br /&gt;
为虚拟机申请一个互联网上可以直接访问的公有IP地址。该种访问方式，需要另行收取公有IP地址的费用。&lt;br /&gt;
&lt;br /&gt;
如需申请公有IP地址，请联系管理员尹伟老师，邮箱为： yw@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
= 故障或问题联系人 =&lt;br /&gt;
&lt;br /&gt;
用户在使用机群过程中，如遇到故障或操作方面的问题，请联系尹伟老师，邮箱为： yw@mail.tsinghua.edu.cn&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=673</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=673"/>
				<updated>2017-11-20T09:03:37Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
== 对新的物理机的操作 ==&lt;br /&gt;
&lt;br /&gt;
首先需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;br /&gt;
&lt;br /&gt;
如果你添加了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki与http://wiki.iiis.systems:9988/w/index.php/Alluxio_User_Guide 这两个链接&lt;br /&gt;
&lt;br /&gt;
== 在Master中修改Alluxio配置 ==&lt;br /&gt;
&lt;br /&gt;
我们需要Alluxio的Master中添加Worker让他知道多了哪些节点。所以需要在&lt;br /&gt;
&lt;br /&gt;
    vim /root/mesos/alluxio-1.5.0/conf/workers&lt;br /&gt;
&lt;br /&gt;
添加你的新的虚拟机IP地址，全部加上30个没关系，Alluxio会自行寻找哪些能通哪些不能通。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=672</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=672"/>
				<updated>2017-11-20T08:50:10Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1pLmivLh 密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
如果你修改了新的虚拟机的地址，请上传新的Excel表并且修改这里Wiki。&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=671</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=671"/>
				<updated>2017-11-20T08:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;br /&gt;
&lt;br /&gt;
首先需要把所有的虚拟机都绑定外网地址，这样他们才能跟Alluxio的Master180互通有无。下面是脚本：&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            data=''&lt;br /&gt;
            ii=i+XX&lt;br /&gt;
            with open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0', 'r+') as f:&lt;br /&gt;
                    for line in f.readlines():&lt;br /&gt;
                            if(line.find('DEVICE') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('ifcfg-enp3s0f0:%s' %i,) + '\n'&lt;br /&gt;
                            if(line.find('IPADDR') == 0):&lt;br /&gt;
                                    line = 'DEVICE=%s' % ('10.1.X.%s' %ii,) + '\n'&lt;br /&gt;
                            data += line&lt;br /&gt;
            file_object = open('/etc/sysconfig/network-scripts/ifcfg-enp3s0f0:%s' %i, 'w')&lt;br /&gt;
            file_object.writelines(data)&lt;br /&gt;
            file_object.close( )&lt;br /&gt;
其中XX跟X是虚拟机的IP地址，请在这个表格里面看还剩下什么IP地址。https://pan.baidu.com/s/1pLmivLh 。密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
然后记得重启网络，或者你可以用命令行加一个暂时的。然后是添加iptables&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import re&lt;br /&gt;
    import pexpect&lt;br /&gt;
    import time&lt;br /&gt;
    for i in range(1,31):&lt;br /&gt;
            ip=i+XX&lt;br /&gt;
            ip2=i+1&lt;br /&gt;
            ll='172.17.0.%s' %ip2&lt;br /&gt;
            command1='iptables -t nat -A PREROUTING -d 10.1.3.%s -p tcp -m tcp --dport 1:65535 -j DNAT --to-destination %s:1-65535' %(ip,ll)&lt;br /&gt;
            command2='iptables -t nat -A POSTROUTING -d %s -p tcp -m tcp --dport 1:65535 -j SNAT --to-source 172.17.0.1' %ll&lt;br /&gt;
            command3='ifconfig enp3s0f0:%s 10.1.X.%s/16' %(i,ip)&lt;br /&gt;
            os.system(command1)&lt;br /&gt;
            os.system(command2)&lt;br /&gt;
            os.system(command3)&lt;br /&gt;
&lt;br /&gt;
跟上面一样XX跟X是虚拟机的IP地址。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=670</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=670"/>
				<updated>2017-11-20T07:03:08Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;br /&gt;
&lt;br /&gt;
= 对于一台新的物理机加到集群中 =&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=669</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=669"/>
				<updated>2017-11-20T06:58:20Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 &lt;br /&gt;
&lt;br /&gt;
申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=668</id>
		<title>Instructor of Booting Alluxio</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Instructor_of_Booting_Alluxio&amp;diff=668"/>
				<updated>2017-11-20T06:58:04Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: Created page with &amp;quot;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务  = 对于Docker的虚拟机 =  Docker虚拟机在咱们的网站http://10.1.1.1:81...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本指导知道大家以及以后的我怎么在一台新的服务器上部署Alluxio服务&lt;br /&gt;
&lt;br /&gt;
= 对于Docker的虚拟机 =&lt;br /&gt;
&lt;br /&gt;
Docker虚拟机在咱们的网站http://10.1.1.1:81 申请虚拟机的时候在Json文件请填写&amp;quot;image&amp;quot;: &amp;quot;10.1.0.180/alluxio/ubuntu_14.04.5:latest&amp;quot;即可。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Main_Page&amp;diff=667</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Main_Page&amp;diff=667"/>
				<updated>2017-11-20T06:48:51Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to Systems Lab at IIIS&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Projects]]&lt;br /&gt;
* [http://www.iiis.systems/wp Progress Reports and Paper Summaries]&lt;br /&gt;
* [[Documentations]]&lt;br /&gt;
* [[SharedBooks]]&lt;br /&gt;
* [[OpenStack User Guide]]&lt;br /&gt;
* [[GPU-Cluster(Docker)3.0 User Guide]]&lt;br /&gt;
* [[Alluxio User Guide]]&lt;br /&gt;
* [[Instructor of Booting Alluxio]]&lt;br /&gt;
* [[HowToEditWikiPages]]&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=666</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=666"/>
				<updated>2017-11-17T10:04:42Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
&lt;br /&gt;
如何知道我的公网Ip？ 你可以ifconfig查询172地址然后找Excel找出对应的。&lt;br /&gt;
&lt;br /&gt;
https://pan.baidu.com/s/1pLmivLh 密码是&lt;br /&gt;
&lt;br /&gt;
[[Image:key.png]]&lt;br /&gt;
&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写，还有记得要写ssh-keygen -t rsa 让虚拟机进行无密码登录&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=665</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=665"/>
				<updated>2017-11-17T09:46:11Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用Tensorflow运行分布式GPU运算 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;br /&gt;
&lt;br /&gt;
Tensorflow的数据输入输出需要参考前面的Alluxio的输入输出来写&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=664</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=664"/>
				<updated>2017-11-17T09:44:41Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;br /&gt;
&lt;br /&gt;
= 用Tensorflow运行分布式GPU运算 =&lt;br /&gt;
首先你要记得在你申请Docker的时候，需要特别注明你的Docker虚拟机所在的物理机的IP，否则虽然建立起了多个Docker虚拟机但是还是在同一台机器的GPU进行计算反而会降低效率。&lt;br /&gt;
下面这个Excel表格是所有带GPU的服务器物理地址，以及他们虚拟机的公网IP&lt;br /&gt;
关于怎么用Tensorflow写分布式可以参见&lt;br /&gt;
&lt;br /&gt;
https://learningtensorflow.com/lesson11/&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=663</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=663"/>
				<updated>2017-11-17T08:49:28Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用Python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'w') as f:&lt;br /&gt;
        f.write('Alluxio works with Python!\n')&lt;br /&gt;
        with open(sys.argv[0]) as this_file:&lt;br /&gt;
            f.write(this_file)&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=662</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=662"/>
				<updated>2017-11-17T08:47:52Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想要在Ceph读数据 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 == &lt;br /&gt;
&lt;br /&gt;
=== 用Java ===   &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用python ===&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
更多操作请参考： https://www.alluxio.org/docs/1.6/en/Clients-Python.html&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=661</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=661"/>
				<updated>2017-11-17T08:45:12Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 用Python */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 ==    &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=660</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=660"/>
				<updated>2017-11-17T08:44:51Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想要在Ceph写数据 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
=== 用Java ===&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
=== 用Python ===&lt;br /&gt;
&lt;br /&gt;
首先需要pip install alluxio&lt;br /&gt;
&lt;br /&gt;
    import json&lt;br /&gt;
    import sys&lt;br /&gt;
    import alluxio&lt;br /&gt;
    from alluxio import option&lt;br /&gt;
&lt;br /&gt;
    with client.open('/XXX.txt', 'r') as f:&lt;br /&gt;
        print f.read()&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 ==    &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=659</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=659"/>
				<updated>2017-11-17T08:18:21Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX &lt;br /&gt;
== 我想要在Ceph读数据 ==    &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;br /&gt;
&lt;br /&gt;
= 在Spark中运行Alluxio =&lt;br /&gt;
请自行搭建Spark之后的教程请参见： https://www.alluxio.org/docs/1.0/en/Running-Spark-on-Alluxio.html&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=658</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=658"/>
				<updated>2017-11-16T12:10:56Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX &lt;br /&gt;
== 我想要在Ceph读数据 ==    &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 关于Alluxio的API reference ==&lt;br /&gt;
&lt;br /&gt;
https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.org/docs/1.5/en/File-System-API.html&lt;br /&gt;
&lt;br /&gt;
https://www.alluxio.com/blog/unified-namespace-allowing-applications-to-access-data-anywhere&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=657</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=657"/>
				<updated>2017-11-16T12:05:21Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想要在Ceph读数据 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 ==    &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   package io;&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=656</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=656"/>
				<updated>2017-11-16T12:04:37Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想要在Ceph读数据 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 ==&lt;br /&gt;
    &lt;br /&gt;
    import alluxio.client.file.*;&lt;br /&gt;
    import alluxio.AlluxioURI;&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例 这个'/'默认在'/mnt/data'下 &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
然后执行 javac -classpath /root/mesos/alluxio-1.5.0/client/flink/alluxio-1.5.0-flink-client.jar XXX.java 以及 java -cp .:client/flink/alluxio-1.5.0-flink-client.jar XXX&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   package io;&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=655</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=655"/>
				<updated>2017-11-15T11:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   package io;&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
因为Alluxio还在开发两个底层系统整合，所以如果有同学想要在Alluxio运行Hadoop，我需要在10.1.0.180里面修改alluxio-env.sh跟alluxio-site.properties里面的alluxio.underfs.address=hdfs://node-1:9000/hdfs/data1跟ALLUXIO_UNDERFS_ADDRESS=hdfs://node-1:9000/hdfs/data1并且关掉Ceph的ALLUXIO_UNDERFS_ADDRESS，有需求的同学也请联系我。&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=654</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=654"/>
				<updated>2017-11-15T11:38:18Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想要在Alluxio运行Hadoop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   package io;&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
&lt;br /&gt;
TBD 在Alluxio运行Hadoop&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	<entry>
		<id>http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=653</id>
		<title>Alluxio User Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.iiis.systems:9988/w/index.php?title=Alluxio_User_Guide&amp;diff=653"/>
				<updated>2017-11-15T11:37:12Z</updated>
		
		<summary type="html">&lt;p&gt;Chentianjia: /* 我想要在Alluxio运行Hadoop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Docker使用Alluxio教程&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 什么是Alluxio？ =&lt;br /&gt;
&lt;br /&gt;
Alluxio是一个基于内存的分布式文件系统，它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件，主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。&lt;br /&gt;
&lt;br /&gt;
徐葳老师希望所有Docker虚拟机共享内存中的文件，这样就可以快速读取文件信息。搭出来的Alluxio是这样的。&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:dashboard_VM1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以在 http://10.1.0.180:19999/home 看到&lt;br /&gt;
&lt;br /&gt;
= 我们的Alluxio =&lt;br /&gt;
&lt;br /&gt;
我们的Alluxio的底层存储系统有两个： Ceph与HDFS。利用Alluxio’s unified namespace有两个优势：&lt;br /&gt;
&lt;br /&gt;
1）程序可以使用相同的命名空间和接口，在不同的底层存储系统中通信。程序和新的存储之间无缝结合。&lt;br /&gt;
&lt;br /&gt;
2）仅需把数据在内存中加载一次，你的程序就能以不同类型的存储系统进行访问。&lt;br /&gt;
&lt;br /&gt;
我们的Docker虚拟机默认连接的是Ceph。需要调用Alluxio的API才能把数据加载到内存中。例子是如何用Java在Ceph中读取/写入数据：&lt;br /&gt;
&lt;br /&gt;
默认路径是/mnt/data，读取/写入数据请从新构造一个文件夹：&lt;br /&gt;
&lt;br /&gt;
== Alluxio的位置 ==&lt;br /&gt;
&lt;br /&gt;
    cd /root/mesos/alluxio-1.5.0&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph写数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
      &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
      &lt;br /&gt;
    // 设置一些操作选项  &lt;br /&gt;
    // 设置文件块大小为128M  &lt;br /&gt;
    CreateFileOptions options = CreateFileOptions.defaults().setBlockSize(128 * Constants.MB);  &lt;br /&gt;
      &lt;br /&gt;
    // 创建一个文件并获取它的文件输出流FileOutStream实例  &lt;br /&gt;
    FileOutStream out = fs.createFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输出流FileOutStream实例的write()方法写入数据  &lt;br /&gt;
    out.write(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输出流FileOutStream实例，结束写文件操作  &lt;br /&gt;
    out.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Ceph读数据 ==&lt;br /&gt;
&lt;br /&gt;
    // 获取文件系统客户端FileSystem实例  &lt;br /&gt;
    FileSystem fs = FileSystem.Factory.get();  &lt;br /&gt;
              &lt;br /&gt;
    // 构造Alluxio路径AlluxioURI实例  &lt;br /&gt;
    AlluxioURI path = new AlluxioURI(&amp;quot;/myFile&amp;quot;);  &lt;br /&gt;
              &lt;br /&gt;
    // 打开一个文件，获得文件输入流FileInStream（同时获得一个锁以防止文件被删除）  &lt;br /&gt;
    FileInStream in = fs.openFile(path);  &lt;br /&gt;
      &lt;br /&gt;
    // 调用文件输入流FileInStream实例的read()方法读数据  &lt;br /&gt;
    in.read(...);  &lt;br /&gt;
      &lt;br /&gt;
    // 关闭文件输入流FileInStream实例，结束读文件操作（同时释放锁）  &lt;br /&gt;
    in.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要同时用Ceph跟HDFS ==&lt;br /&gt;
   // 需要import&lt;br /&gt;
   package io;&lt;br /&gt;
   import alluxio.client.file.FileInStream;&lt;br /&gt;
   import alluxio.client.file.FileOutStream;&lt;br /&gt;
   import alluxio.client.file.FileSystem;&lt;br /&gt;
   // 把HDFS mount到Alluxio&lt;br /&gt;
   FileSystem fileSystem = FileSystem.Factory.get();&lt;br /&gt;
   fileSystem.mount(&amp;quot;/mnt/hdfs&amp;quot;, &amp;quot;hdfs://10.10.0.1:9000/hdfs/data1&amp;quot;);&lt;br /&gt;
   // 从HDFS读取数据&lt;br /&gt;
   AlluxioURI inputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/input.data&amp;quot;);&lt;br /&gt;
   FileInStream is = fileSystem.openFile(inputUri);&lt;br /&gt;
   ... // read data&lt;br /&gt;
   is.close();&lt;br /&gt;
   ... // perform computation&lt;br /&gt;
   // 写数据到HDFS&lt;br /&gt;
   AlluxioURI outputUri = new AlluxioURI(&amp;quot;/mnt/hdfs/output.data&amp;quot;);&lt;br /&gt;
   FileOutStream os = fileSystem.createFile(outputUri);&lt;br /&gt;
   ... // write data&lt;br /&gt;
   os.close();&lt;br /&gt;
&lt;br /&gt;
== 我想要在Alluxio运行Hadoop ==&lt;br /&gt;
Hadoop被安装在10.1.0.1~10.1.0.10并有90T HDFS空间，需要运行Hadoop without Alluxio可以联系我 ctj2015@mail.tsinghua.edu.cn&lt;br /&gt;
TBD 在Alluxio运行Hadoop&lt;/div&gt;</summary>
		<author><name>Chentianjia</name></author>	</entry>

	</feed>