[ https://issues.apache.org/jira/browse/HAMA-992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15311760#comment-15311760 ]
Chaitanya commented on HAMA-992: -------------------------------- Hello Thomas, I am running the following python code meant for CFD simulations which runs well outside the hama environment. # In[1]: from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib import pyplot import numpy #get_ipython().magic(u'matplotlib inline') nx = 41 ny = 41 nt = 500 nit=50 c = 1 dx = 2./(nx-1) dy = 2./(ny-1) x = numpy.linspace(0,2,nx) y = numpy.linspace(0,2,ny) X,Y = numpy.meshgrid(x,y) rho = 1 nu = .1 dt = .001 u = numpy.zeros((ny, nx)) v = numpy.zeros((ny, nx)) p = numpy.zeros((ny, nx)) b = numpy.zeros((ny, nx)) # The pressure Poisson equation that's written above can be hard to write out without typos. The function `buildUpB` below represents the contents of the square brackets, so that the entirety of the PPE is slightly more manageable. # In[2]: def buildUpB(b, rho, dt, u, v, dx, dy): b[1:-1,1:-1]=rho*(1/dt*((u[1:-1,2:]-u[1:-1,0:-2])/(2*dx)+(v[2:,1:-1]-v[0:-2,1:-1])/(2*dy))-((u[1:-1,2:]-u[1:-1,0:-2])/(2*dx))**2-2*((u[2:,1:-1]-u[0:-2,1:-1])/(2*dy)*(v[1:-1,2:]-v[1:-1,0:-2])/(2*dx))- ((v[2:,1:-1]-v[0:-2,1:-1])/(2*dy))**2) return b # The function `presPoisson` is also defined to help segregate the different rounds of calculations. Note the presence of the pseudo-time variable `nit`. This sub-iteration in the Poisson calculation helps ensure a divergence-free field. # In[3]: def presPoisson(p, dx, dy, b): pn = numpy.empty_like(p) pn = p.copy() for q in range(nit): pn = p.copy() p[1:-1,1:-1] = ((pn[1:-1,2:]+pn[1:-1,0:-2])*dy**2+(pn[2:,1:-1]+pn[0:-2,1:-1])*dx**2)/ (2*(dx**2+dy**2)) - dx**2*dy**2/(2*(dx**2+dy**2))*b[1:-1,1:-1] p[:,-1] =p[:,-2] ##dp/dy = 0 at x = 2 p[0,:] = p[1,:] ##dp/dy = 0 at y = 0 p[:,0]=p[:,1] ##dp/dx = 0 at x = 0 p[-1,:]=0 ##p = 0 at y = 2 return p # Finally, the rest of the cavity flow equations are wrapped inside the function `cavityFlow`, allowing us to easily plot the results of the cavity flow solver for different lengths of time. # In[4]: def cavityFlow(nt, u, v, dt, dx, dy, p, rho, nu): un = numpy.empty_like(u) vn = numpy.empty_like(v) b = numpy.zeros((ny, nx)) for n in range(nt): un = u.copy() vn = v.copy() b = buildUpB(b, rho, dt, u, v, dx, dy) p = presPoisson(p, dx, dy, b) u[1:-1,1:-1] = un[1:-1,1:-1]- un[1:-1,1:-1]*dt/dx*(un[1:-1,1:-1]-un[1:-1,0:-2])- vn[1:-1,1:-1]*dt/dy*(un[1:-1,1:-1]-un[0:-2,1:-1])- dt/(2*rho*dx)*(p[1:-1,2:]-p[1:-1,0:-2])+ nu*(dt/dx**2*(un[1:-1,2:]-2*un[1:-1,1:-1]+un[1:-1,0:-2])+ dt/dy**2*(un[2:,1:-1]-2*un[1:-1,1:-1]+un[0:-2,1:-1])) v[1:-1,1:-1] = vn[1:-1,1:-1]- un[1:-1,1:-1]*dt/dx*(vn[1:-1,1:-1]-vn[1:-1,0:-2])- vn[1:-1,1:-1]*dt/dy*(vn[1:-1,1:-1]-vn[0:-2,1:-1])- dt/(2*rho*dy)*(p[2:,1:-1]-p[0:-2,1:-1])+ nu*(dt/dx**2*(vn[1:-1,2:]-2*vn[1:-1,1:-1]+vn[1:-1,0:-2])+ (dt/dy**2*(vn[2:,1:-1]-2*vn[1:-1,1:-1]+vn[0:-2,1:-1]))) u[0,:] = 0 u[:,0] = 0 u[:,-1] = 0 u[-1,:] = 1 #set velocity on cavity lid equal to 1 v[0,:] = 0 v[-1,:]=0 v[:,0] = 0 v[:,-1] = 0 return u, v, p # Let's start with `nt = 100` and see what the solver gives us: # In[5]: u = numpy.zeros((ny, nx)) v = numpy.zeros((ny, nx)) p = numpy.zeros((ny, nx)) b = numpy.zeros((ny, nx)) nt = 100 u, v, p = cavityFlow(nt, u, v, dt, dx, dy, p, rho, nu) fig = pyplot.figure(figsize=(11,7), dpi=100) pyplot.contourf(X,Y,p,alpha=0.5) ###plnttong the pressure field as a contour pyplot.colorbar() pyplot.contour(X,Y,p) ###plotting the pressure field outlines pyplot.quiver(X[::2,::2],Y[::2,::2],u[::2,::2],v[::2,::2]) ##plotting velocity pyplot.xlabel('X') pyplot.ylabel('Y'); # You can see that two distinct pressure zones are forming and that the spiral pattern expected from lid-driven cavity flow is beginning to form. Experiment with different values of `nt` to see how long the system takes to stabilize. # In[6]: u = numpy.zeros((ny, nx)) v = numpy.zeros((ny, nx)) p = numpy.zeros((ny, nx)) b = numpy.zeros((ny, nx)) nt = 700 u, v, p = cavityFlow(nt, u, v, dt, dx, dy, p, rho, nu) fig = pyplot.figure(figsize=(11,7), dpi=100) pyplot.contourf(X,Y,p,alpha=0.5) pyplot.colorbar() pyplot.contour(X,Y,p) pyplot.quiver(X[::2,::2],Y[::2,::2],u[::2,::2],v[::2,::2]) pyplot.xlabel('X') pyplot.ylabel('Y'); pyplot.show() > Hama streaming > -------------- > > Key: HAMA-992 > URL: https://issues.apache.org/jira/browse/HAMA-992 > Project: Hama > Issue Type: Question > Components: bsp core, pipes > Affects Versions: 0.7.1 > Environment: RASPBIAN JESSIE > Full desktop image based on Debian Jessie > Reporter: Chaitanya > Labels: features, github-import, newbie > > Hello all, > I am trying to implement apache hama on Raspberry pi model 3 to establish a > distributed computing platform for scientific computation. I am trying to run > hama streaming over hadoop on a single namenode but I am facing a bit of a > difficulty in streaming my python code. I have downloaded the hama streaming > repository from :- > https://github.com/thomasjungblut/HamaStreaming > I ran the examples and also HelloWorldBSP.py on Hama and they work well. But > as soon as I switch to running my python code, the job fails. > I am trying to run the code with the following command:- > hama pipes -streaming true -bspTasks 1 -interpreter python -output > /tmp/pystream-out_2/ -program /tmp/PyStreaming/BSPRunner.py -programArgs > python.py > Below is the log file for your reference. I hope you can find time to help me > in this minor project:- > 16/06/01 14:48:46 WARN util.NativeCodeLoader: Unable to load native-hadoop > library for your platform... using builtin-java classes where applicable > 16/06/01 14:48:49 INFO ipc.Server: Starting Socket Reader #1 for port 61001 > 16/06/01 14:48:49 INFO ipc.Server: IPC Server listener on 61001: starting > 16/06/01 14:48:49 INFO ipc.Server: IPC Server Responder: starting > 16/06/01 14:48:49 INFO ipc.Server: IPC Server handler 0 on 61001: starting > 16/06/01 14:48:49 INFO ipc.Server: IPC Server handler 1 on 61001: starting > 16/06/01 14:48:49 INFO ipc.Server: IPC Server handler 3 on 61001: starting > 16/06/01 14:48:49 INFO ipc.Server: IPC Server handler 2 on 61001: starting > 16/06/01 14:48:49 INFO ipc.Server: IPC Server handler 4 on 61001: starting > 16/06/01 14:48:49 INFO message.HamaMessageManagerImpl: BSPPeer > address:localhost port:61001 > 16/06/01 14:48:51 INFO Configuration.deprecation: mapred.cache.localFiles is > deprecated. Instead, use mapreduce.job.cache.local.files > 16/06/01 14:48:51 INFO sync.ZKSyncClient: Initializing ZK Sync Client > 16/06/01 14:48:51 INFO sync.ZooKeeperSyncClientImpl: Start connecting to > Zookeeper! At localhost/127.0.0.1:61001 > java.lang.NumberFormatException: For input string: "Traceback (most recent > call last):" > at > java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) > at java.lang.Integer.parseInt(Integer.java:580) > at java.lang.Integer.parseInt(Integer.java:615) > at > org.apache.hama.pipes.protocol.StreamingProtocol$StreamingUplinkReaderThread.readCommand(StreamingProtocol.java:174) > at > org.apache.hama.pipes.protocol.UplinkReader.run(UplinkReader.java:106) > 16/06/01 14:48:52 ERROR protocol.UplinkReader: java.lang.Exception: Bad > command code: -2 > at > org.apache.hama.pipes.protocol.UplinkReader.run(UplinkReader.java:174) > java.util.concurrent.BrokenBarrierException > at java.util.concurrent.CyclicBarrier.dowait(CyclicBarrier.java:250) > at java.util.concurrent.CyclicBarrier.await(CyclicBarrier.java:362) > at > org.apache.hama.pipes.protocol.StreamingProtocol.start(StreamingProtocol.java:223) > at > org.apache.hama.pipes.PipesApplication.start(PipesApplication.java:293) > at org.apache.hama.pipes.PipesBSP.setup(PipesBSP.java:43) > at org.apache.hama.bsp.BSPTask.runBSP(BSPTask.java:170) > at org.apache.hama.bsp.BSPTask.run(BSPTask.java:144) > at > org.apache.hama.bsp.GroomServer$BSPPeerChild.main(GroomServer.java:1255) > Exception in thread "pipe-uplink-handler" java.lang.RuntimeException: > java.lang.Exception: Bad command code: -2 > at > org.apache.hama.pipes.protocol.UplinkReader.run(UplinkReader.java:182) > Caused by: java.lang.Exception: Bad command code: -2 > at > org.apache.hama.pipes.protocol.UplinkReader.run(UplinkReader.java:174) > 16/06/01 14:48:52 ERROR bsp.BSPTask: Error running bsp setup and bsp function. > java.io.IOException: Stream closed > at > java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) > at java.io.OutputStream.write(OutputStream.java:116) > at > java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:141) > at java.io.DataOutputStream.flush(DataOutputStream.java:123) > at > org.apache.hama.pipes.protocol.StreamingProtocol.writeLine(StreamingProtocol.java:287) > at > org.apache.hama.pipes.protocol.StreamingProtocol.runSetup(StreamingProtocol.java:248) > at org.apache.hama.pipes.PipesBSP.setup(PipesBSP.java:45) > at org.apache.hama.bsp.BSPTask.runBSP(BSPTask.java:170) > at org.apache.hama.bsp.BSPTask.run(BSPTask.java:144) > at > org.apache.hama.bsp.GroomServer$BSPPeerChild.main(GroomServer.java:1255) > 16/06/01 14:48:52 ERROR bsp.BSPTask: Error cleaning up after bsp executed. > java.io.IOException: Stream closed > at > java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) > at java.io.OutputStream.write(OutputStream.java:116) > at > java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:141) > at java.io.DataOutputStream.flush(DataOutputStream.java:123) > at > org.apache.hama.pipes.protocol.StreamingProtocol.writeLine(StreamingProtocol.java:287) > at > org.apache.hama.pipes.protocol.StreamingProtocol.runCleanup(StreamingProtocol.java:271) > at org.apache.hama.pipes.PipesBSP.cleanup(PipesBSP.java:95) > at org.apache.hama.bsp.BSPTask.runBSP(BSPTask.java:177) > at org.apache.hama.bsp.BSPTask.run(BSPTask.java:144) > at > org.apache.hama.bsp.GroomServer$BSPPeerChild.main(GroomServer.java:1255) > 16/06/01 14:48:53 INFO ipc.Server: Stopping server on 61001 > 16/06/01 14:48:53 INFO ipc.Server: IPC Server handler 1 on 61001: exiting > 16/06/01 14:48:53 INFO ipc.Server: Stopping IPC Server listener on 61001 > 16/06/01 14:48:53 INFO ipc.Server: IPC Server handler 0 on 61001: exiting > 16/06/01 14:48:53 INFO ipc.Server: IPC Server handler 3 on 61001: exiting > 16/06/01 14:48:53 INFO ipc.Server: IPC Server handler 4 on 61001: exiting > 16/06/01 14:48:53 INFO ipc.Server: IPC Server handler 2 on 61001: exiting > 16/06/01 14:48:53 INFO ipc.Server: Stopping IPC Server Responder > 16/06/01 14:48:53 ERROR bsp.BSPTask: Shutting down ping service. > 16/06/01 14:48:53 FATAL bsp.GroomServer: Error running child > java.io.IOException: Stream closed > at > java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) > at java.io.OutputStream.write(OutputStream.java:116) > at > java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:141) > at java.io.DataOutputStream.flush(DataOutputStream.java:123) > at > org.apache.hama.pipes.protocol.StreamingProtocol.writeLine(StreamingProtocol.java:287) > at > org.apache.hama.pipes.protocol.StreamingProtocol.runSetup(StreamingProtocol.java:248) > at org.apache.hama.pipes.PipesBSP.setup(PipesBSP.java:45) > at org.apache.hama.bsp.BSPTask.runBSP(BSPTask.java:170) > at org.apache.hama.bsp.BSPTask.run(BSPTask.java:144) > at > org.apache.hama.bsp.GroomServer$BSPPeerChild.main(GroomServer.java:1255) > java.io.IOException: Stream closed > at > java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) > at java.io.OutputStream.write(OutputStream.java:116) > at > java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:141) > at java.io.DataOutputStream.flush(DataOutputStream.java:123) > at > org.apache.hama.pipes.protocol.StreamingProtocol.writeLine(StreamingProtocol.java:287) > at > org.apache.hama.pipes.protocol.StreamingProtocol.runSetup(StreamingProtocol.java:248) > at org.apache.hama.pipes.PipesBSP.setup(PipesBSP.java:45) > at org.apache.hama.bsp.BSPTask.runBSP(BSPTask.java:170) > at org.apache.hama.bsp.BSPTask.run(BSPTask.java:144) > at > org.apache.hama.bsp.GroomServer$BSPPeerChild.main(GroomServer.java:1255) -- This message was sent by Atlassian JIRA (v6.3.4#6332)