Getting Started with PROOF

Hi,

I recently have tried to run PROOF in 5.11/06 on Debian etch and sarge. I read the PROOF.README as well as the manpage for proofd looking for hints on how to get started. I am having trouble with authentication, I believe. Is there a HOWTO somewhere that I am missing??

I have setup two nodes to have the proofd daemon running (as root, though init.d scripts… had to modify /etc/default/root-proofd to get this to happen). From the manpage, I had expected /usr/share/root/proof/etc to be where my configuration files went, but this did not work. Somehow, I figured out that $HOME/.proof.conf was a good place to use.

If I run with a configuration of

master localhost
worker localhost
worker localhost

I seem to be happy, though I get an annoying warning about credentials.

root [0] TProof::Open("")
Starting master: opening connection …
Starting master: OK
Opening connections to workers: OK (2 workers)
Setting up worker servers: OK (2 workers)
Warning in on master0: not a tty: cannot prompt for credentials, returning failure
Warning in on master0: not a tty: cannot prompt for credentials, returning failure
PROOF set to parallel mode (2 workers)
(class TVirtualProof*)0x9966880
root [1]

However, if I try to use my two nodes (alpha and beta, setup with passwordless ssh capability) with this configuration:

master beta
worker alpha
worker beta

I have problems. Below is the output, with gDebug=3.

Thanks for any insights,
Chris

root [0] gDebug=3
(const int)3
root [1] TProof::Open("")
Info in : loaded library /usr/lib/root/5.11/libThread.so, status 0
Info in : loaded dependent library libThread.so for class TProof
Info in : loading dependent library libHist.so for library libTreePlayer.so
Info in : loading dependent library libGraf.so for library libTreePlayer.so
Info in : loading dependent library libGraf3d.so for library libTreePlayer.so
Info in : loading dependent library libTree.so for library libTreePlayer.so
Info in : loaded library /usr/lib/root/5.11/libTreePlayer.so, status 0
Info in : loaded dependent library libTreePlayer.so for class TProof
Info in : loaded dependent library libHist.so for class TProof
Info in : loaded dependent library libGraf.so for class TProof
Info in : loaded dependent library libGraf3d.so for class TProof
Info in : loaded dependent library libTree.so for class TProof
Info in : loading dependent library libThread.so for library libProof.so
Info in : loading dependent library libTreePlayer.so for library libProof.so
Info in : loading dependent library libHist.so for library libProof.so
Info in : loading dependent library libGraf.so for library libProof.so
Info in : loading dependent library libGraf3d.so for library libProof.so
Info in : loading dependent library libTree.so for library libProof.so
Info in : loaded library /usr/lib/root/5.11/libProof.so, status 0
Info in : loaded library libProof.so for class TProof
No managers found
Info in : loading dependent library libXrdProofd.so for library libProofx.so
Info in : loaded library /usr/lib/root/5.11/libXrdProofd.so, status 0
Info in : loading dependent library libThread.so for library libProofx.so
Info in : loading dependent library libProof.so for library libProofx.so
Info in : loaded dependent library libXrdProofd.so for class TXSocket
Info in : loaded dependent library libThread.so for class TXSocket
Info in : loaded dependent library libProof.so for class TXSocket
Info in : loaded library libProofx.so for class TXSocket
Info in : loaded dependent library libXrdProofd.so for class TXProofMgr
Info in : loaded dependent library libThread.so for class TXProofMgr
Info in : loaded dependent library libProof.so for class TXProofMgr
Info in : loaded library libProofx.so for class TXProofMgr
Info in : loaded dependent library libXrdProofd.so for class TXProofServ
Info in : loaded dependent library libThread.so for class TXProofServ
Info in : loaded dependent library libProof.so for class TXProofServ
Info in : loaded library libProofx.so for class TXProofServ
Info in : loaded dependent library libXrdProofd.so for class TXSlave
Info in : loaded dependent library libThread.so for class TXSlave
Info in : loaded dependent library libProof.so for class TXSlave
Info in : loaded library libProofx.so for class TXSlave
Info in : loaded dependent library libXrdProofd.so for class TXUnixSocket
Info in : loaded dependent library libThread.so for class TXUnixSocket
Info in : loaded dependent library libProof.so for class TXUnixSocket
Info in : loaded library libProofx.so for class TXUnixSocket
Info in : loaded library /usr/lib/root/5.11/libProofx.so, status 0
Info in : not connected: nothing to do
Starting master: opening connection …
Info in : Local protocol: proofd
Info in : found plugin for TRootAuth
Info in : loaded library libRootAuth.so for class TAuthenticate
Info in : loaded library libRootAuth.so for class THostAuth
Info in : loaded library libRootAuth.so for class TRootSecContext
Info in : loaded library libRootAuth.so for class TRootAuth
Info in : loaded library /usr/lib/root/5.11/libRootAuth.so, status 0
Info in : class for ‘Root’ authentication loaded
Info in : Enter: local host: beta.physics.ucdavis.edu, user is: croat (proto: proof:13)
Info in : enter
Info in : taking seed from /dev/urandom
Info in : SSL: Generate Blowfish key
Info in : enter … len: 32 Any
Info in : SSL: BF key length: 32
Info in : enter … len: 30 Any
Info in : local: export pub length: 88 bytes
Info in : Checking file: /home/croat/.rootauthrc
Info in : did not find plugin for class TSystem and uri /home/croat/.rootauthrc
Info in : file /home/croat/.rootauthrc cannot be read (errno: 2)
Info in : Checking system file:/etc/root/system.rootauthrc
Info in : did not find plugin for class TSystem and uri /etc/root/system.rootauthrc
Info in : got tmp file: /tmp/rootauthrciZtaaE open at 0x99bad30
Info in : enter … ‘/etc/root/system.rootauthrc’ … 0x99bad30
Info in : read line … 'default list usrpwd ssh krb5 uidgid '
Info in : enter … 0 …pt:0 … ''
Info in : returning … pt:no ru:yes cp:yes us:
Info in : enter … 4 …pt:0 … '
'
Info in : returning … pt:no ru:yes us:
Info in : enter … 2 …pt:0 … ''
Info in : returning … pt:no ru:no us:
Info in : enter … 5 …pt:0 … '
'
Info in : returning … pt:no us:
Info in : enter … default:-1 … *
Info in : ±-------------------------- BEGIN --------------------------------+
Info in : + +
Info in : + List fgProofAuthInfo has 0 members +
Info in : + +
Info in : ±-----------------------------------------------------------------+
Info in : ±--------------------------- END ---------------------------------+
Info in : enter … beta.physics.ucdavis.edu:2 … croat
Info in : enter: fUser: croat
Info in : try #: 1
Info in : trying authentication: method:0, default details:pt:no ru:yes cp:yes us:
Info in : setting environment: fSecurity:0, fDetails:pt:no ru:yes cp:yes us:
Info in : details:pt:no ru:yes cp:yes us:, pt:no, ru:yes, us: cp:yes
Info in : usdef:croat
Info in : did not find plugin for class TSystem and uri /home/croat/.rootnetrc
Info in : did not find plugin for class TSystem and uri /home/croat/.netrc
Info in : did not find plugin for class TSystem and uri /home/croat/.rootnetrc
Info in : did not find plugin for class TSystem and uri /home/croat/.netrc
Info in : enter: user: croat (passwd hashed?: a0)
Info in : ru:1 pt:0 cp:1 ns:1 rk:1
Info in : 0: enter: msg: 2000 options: '15 5 croat 5 croat’
Error in : can’t get passwd info (host equivalence: files have wrong permissions)
Info in : after failed attempt: kind= 2037, stat= 2
Info in : remotely allowed methods not yet tried: 4 2
Info in : try #: 2
Info in : trying authentication: method:4, default details:pt:no ru:yes us:
Info in : setting environment: fSecurity:4, fDetails:pt:no ru:yes us:
Info in : details:pt:no ru:yes us:, pt:no, ru:yes, us:
Info in : usdef:croat
Info in : scp is /usr/bin/scp (sshproto: 1)
Info in : 4: enter: msg: 2035 options: '9 none 5 croat 1’
Info in : did not find plugin for class TSystem and uri /home/croat/rootsshtmp_tM5tuH
Info in : did not find plugin for class TSystem and uri /home/croat/rootsshtmp_tM5tuH.error
Info in : ±-----------------------------------------------------+
Info in : + Host:beta.physics.ucdavis.edu Method:4 (SSH) User:'croat’
Info in : + OffSet:1740 Id: 'pt:0 ru:1 us:croat’
Info in : + Expiration time: Thu Jun 29 12:40:46 2006
Info in : ±-----------------------------------------------------+
Info in : sending 76 bytes
Info in : local: enter … (enc: 1)
Starting master: OK
Opening connections to workers: OK (2 workers)
Warning in on master0: not a tty: cannot prompt for credentials, returning failure
Info in on master0: failure: list of attempted methods: UsrPwd Krb5 UidGid
Error in on master0: can’t get passwd info (host equivalence: files have wrong permissions) (last error only; re-run with gDebug > 0 for more details)
Error in on master0: authentication failed for croat@alpha.physics.ucdavis.edu
Error in on master0: authentication attempt failed for @alpha.physics.ucdavis.edu
Warning in on master0: not a tty: cannot prompt for credentials, returning failure
Info in on master0: failure: list of attempted methods: UsrPwd Krb5 UidGid
Error in on master0: can’t get passwd info (host equivalence: files have wrong permissions) (last error only; re-run with gDebug > 0 for more details)
Error in on master0: authentication failed for croat@beta.physics.ucdavis.edu
Error in on master0: authentication attempt failed for @beta.physics.ucdavis.edu
PROOF set to sequential mode
PROOF set to sequential mode
PROOF set to parallel mode (0 workers)
(class TVirtualProof*)0x9997570

Hi Chris,

Sorry for the lack of documentation, I hope we will improve soon on that.

For your problem with the {beta, alfa, beta} cluster, could you please try by adding the following lines in your $HOME/.rootrc (on the client):

Proofd.Authentication: 4
ProofServ.UseSSH: 1

?

Gerri Ganis

Thanks Gerri! Adding those lines worked perfectly for me.

If I want to have multiple configuration files, how would I do that? As I mentioned before, I found that $HOME/.proof.conf gets picked up by default. How do I just change that?

Thanks again!
Chris

Hi Chris,

Yes, the defaults are (in this order)

1. $HOME/.<proof_conf_file>
2. $ROOTSYS/etc/proof/<proof_conf_file>

with <proof_conf_file>= “proof.conf”

(notice the ‘.’ in option 1.).

To change that, for example to use <proof_conf_file>= “proofnew.conf”, you can create the file either under ‘$HOME’ as ‘.proofnew.conf’ or under ‘$ROOTSYS/etc/proof’ as ‘proofnew.conf’, and start PROOF as

root[] TProof::Open("",“proofnew.conf”)

Please try and let me know.

Gerri

Thanks Gerri. That is clearer now. I had tried that before with 0 (NULL) as the first argument and it didn’t work.

Now that I’ve connected successfully, my first few attempts at drawing a large tree or processing a large chain with selector code don’t seem to be using proof (large= several GB). Is this the correct way to excercise proof

TProof::Open("") // seems all my slaves are connected in parallel
TFile f(“somefile.root”)
mytree->Draw(“a”,“b>a”)

?

By the way, when you are writing up documentation, remind people to poke holes in their firewalls for the proofd (and rootd) ports. Took me some time before I realized to do this.

Cheers,
Chris

Hi Chris,

In PROOF the actual work is done by the workers, which will instantiate their own tree from a file. This file must be accessible by the workers either via the local file system or via a remote daemon. The workers open the file via TFile::Open(): the right backend is chosen on the base of the URL protocol.

So, the first thing to do is to make sure that the workers can read the file(s) with the tree(s). If you have these files on your client machine then you have the option of copying them to the worker machines or to start a ‘rootd’ daemon on your client machine to serve the files to the workers.

Of course, the best performance is obtained with files local to the workers. There is currently work ongoing which should significantly improve the situation in the case of remote files.

Once you have your files, you have to create a data set which basically will tell PROOF where to find the tree to process.

So, let’s suppose that your tree “myTree” is in file file.root located at /rootdata on the client machine.

If you decide to serve your data with ‘rootd’, then start rootd

$ rootd

(it will run in the background) and create the data set object like this

root[] TDSet *dset = new TDSet(“Tree”,“myTree”)
root[] dset->Add(“rooth://beta//rootdata/file.root”)

(“Tree” is needed because TDSet can be used for other objects; the name “myTree” because there may be more than one tree in the file; the ‘h’ in ‘rooth’ is because you are using passwordless ssh; ‘beta’ is the name of your client machine: if not change to that).

If you decide to distribute the file to the nodes, for example on their /rootdata path, then you do not need to start ‘rootd’, and you have to
create the data set as this

root[] TDSet *dset = new TDSet(“Tree”,“myTree”)
root[] dset->Add("/rootdata/file.root")

Once you have the data set object, you can start PROOF and process via it:

root[] TProof::Open("")
root[] dset->Draw(“a”,“b>a”)

You should see a dialog box appear with a progress bar.

Of course you add as many files as you wish to the data set object via Add, like for TChain.

Please try and let know of any problem.

Gerri