A.- La société X._ SA était affiliée en qualité d'employeur à la Caisse de compensation de la Société suisse des hôteliers et de la Fédération suisse des agences de voyages (Hotela) lorsqu'elle fut déclarée en faillite, le 23 août 1999. A la suite de la suspension de la procédure faute d'actifs, Hotela exigea des trois administrateurs inscrits au registre du commerce, A._, B._ et J._, le paiement d'un montant de 25 103 fr. 05 à titre de réparation du dommage subi dans la faillite (décisions du 8 mai 2000). Les deux derniers nommés s'opposèrent aux décisions les concernant.
B.- Hotela saisit le Tribunal des assurances du canton de Vaud de deux actions en réparation du dommage, l'une contre B._, l'autre contre J._, en concluant dans chacune des procédures au paiement d'un montant de 25 103 fr. 05 par la partie défenderesse. La juridiction cantonale, après avoir joint les causes, condamna les défendeurs au paiement du montant litigieux, solidairement entre eux, par jugement du 2 août 2001.
C.- J._ interjette un recours de droit administratif contre ce jugement, dont elle demande, en substance, la réforme en ce sens que l'action de la caisse la concernant soit rejetée. Hotela conclut au rejet du recours, alors que B._ et l'Office fédéral des assurances sociales ne se sont pas déterminés.

Considérant en droit :
1.- Le litige ne porte pas sur l'octroi ou le refus de prestations d'assurances, de sorte que le Tribunal fédéral des assurances doit se borner à examiner si le jugement de première instance viole le droit fédéral, y compris par l'excès ou par l'abus du pouvoir d'appréciation, ou si les faits pertinents ont été constatés d'une manière manifestement inexacte ou incomplète, ou encore s'ils ont été établis au mépris de règles essentielles de procédure (art. 132 en corrélation avec les art. 104 let. a et b et 105 al. 2 OJ).
2.- En vertu de l'<ref-law>, l'employeur qui, intentionnellement ou par négligence grave, n'observe pas des prescriptions et cause ainsi un dommage à la caisse de compensation est tenu à réparation. Si l'employeur est une personne morale, la responsabilité peut s'étendre, à titre subsidiaire, aux organes qui ont agi en son nom (<ref-ruling> consid. 5b, 122 V 66 consid. 4a, 119 V 405 consid. 2 et les références).
Par ailleurs, l'<ref-law>, en corrélation avec les <ref-law>, prescrit que l'employeur doit déduire, lors de chaque paie, la cotisation du salarié et verser celle-ci à la caisse de compensation en même temps que sa propre cotisation. Les employeurs doivent remettre périodiquement aux caisses les pièces comptables concernant les salaires versés à leurs employés, de manière que les cotisations paritaires puissent être calculées et faire l'objet de décisions.
L'obligation de l'employeur de percevoir les cotisations et de régler les comptes est une tâche de droit public prescrite par la loi. A cet égard, le Tribunal fédéral des assurances a déclaré, à réitérées reprises, que celui qui néglige de l'accomplir enfreint les prescriptions au sens de l'<ref-law> et doit, par conséquent, réparer la totalité du dommage ainsi occasionné (<ref-ruling> consid. 2a et les références).
3.- a) La recourante fait d'abord valoir que A._ est le principal responsable du dommage subi par la caisse, de sorte qu'il aurait dû être partie à la procédure cantonale en qualité de consort nécessaire; à défaut, la décision litigieuse serait nulle.
C'est oublier que l'<ref-law> institue une responsabilité solidaire, de sorte que la caisse jouit d'un concours d'actions en cas de pluralité de responsables.
Autrement, dit, elle peut rechercher tous les débiteurs, quelques-uns ou un seul d'entre eux, à son choix (<ref-ruling> consid. 5a, 112 V 262 consid. 2b). Elle n'aurait eu ainsi, pour ce premier motif, aucune obligation d'agir également à l'encontre de A._. Quoi qu'il en soit, comme on le verra ci-dessous (consid. 4a et 4b), elle a rendu une décision de réparation du dommage à l'encontre du prénommé, qui ne s'y est pas opposé, de sorte qu'elle n'avait plus d'intérêt digne de protection à ouvrir action contre lui.
b) Selon la jurisprudence, le juge des assurances sociales saisi d'une action en réparation du dommage au sens de l'<ref-law> devrait en principe inviter à participer à la procédure, à titre de co-intéressées, les personnes dont la responsabilité solidaire pour le dommage subi par la caisse entre raisonnablement en considération.
Il rend à cet effet, d'office ou sur demande, une décision procédurale invitant le tiers intéressé à participer au procès, sauf si celui-ci ne s'est pas vu adresser de décision de réparation du dommage ou si la caisse a renoncé à ouvrir contre lui une action en réparation du dommage. En revanche, devra au besoin être appelé en cause le responsable qui n'a pas fait opposition à la décision en réparation du dommage (arrêt M. du 3 novembre 2000 [H 134/00], consid. 3b et d et les arrêts cités).
Dans le cas particulier, la recourante n'a formulé aucune requête d'appel en cause en procédure cantonale. Il est pour le moins douteux qu'elle puisse invoquer ce prétendu vice pour la première fois en instance fédérale, mais cette question peut demeurer ouverte pour les motifs qui suivent.
4.- a) La suite donnée à la décision rendue à l'encontre de A._ par la caisse de compensation ne ressort pas des faits retenus par l'autorité cantonale si bien qu'à cet égard, l'état de fait s'avère incomplet (art. 105 al. 2 OJ). Il ne se justifie pas pour autant de renvoyer la cause à la juridiction cantonale dès lors que les renseignements manquants ont été spontanément établis par pièces en instance fédérale. On doit ainsi retenir que A._ n'a pas fait opposition à la décision de la caisse de compensation et que les poursuites entamées à son encontre ont abouti, le 20 novembre 2000, à la délivrance d'un acte de défaut de biens. Par la suite, à une date indéterminée, A._ a quitté la Suisse sans laisser d'adresse.
b) L'ouverture d'une action en réparation du dommage n'entre pas en considération contre celui qui ne s'est pas opposé à la décision de réparation le concernant, faute d'intérêt digne de protection de la caisse à une telle action. Se pose toutefois la question de savoir si la juridiction cantonale devait, au regard des circonstances, d'office appeler en cause A._ et, cas échéant, quelles sont les conséquences d'un éventuel manquement.
c) Par l'appel en cause, les tiers dont les intérêts sont susceptibles d'être touchés par l'issue de la procédure sont invités à y participer. Le fait d'inclure des tiers intéressés dans l'échange d'écritures (cf. art. 110 al. 1 OJ) a pour effet de les soumettre à l'autorité de chose jugée du jugement à rendre, de sorte que celui-ci leur sera par la suite opposable dans le cadre d'une procédure dirigée contre eux (<ref-ruling> consid. 8b; Gygi, Bundesverwaltungsrechtspflege, 2ème éd., p. 183 s.; Kölz/Häner, Verwaltungsverfahren und Verwaltungsrechtspflege des Bundes, 2ème éd., p. 191, no 528).
Mis en oeuvre d'office, l'appel en cause a pour but de permettre de prendre en considération les intérêts du tiers. Or, A._ a disparu sans laisser d'adresse après avoir délivré un acte de défaut de biens pour la totalité de la créance faisant l'objet de la décision rendue à son encontre. Dès lors, il ne se justifiait plus, par économie de procédure, de chercher à l'appeler en cause, puisqu'il n'était plus admis à formuler d'objection à l'encontre du jugement, sa responsabilité étant au demeurant déjà établie par une décision entrée en force (cf. <ref-ruling> consid. 2 sur la nécessité de notifier une décision à un co-intéressé parti sans laisser d'adresse).
5.- Dans un second argument, la recourante soutient qu'elle ne prenait aucune part aux décisions de X._ SA, qui était en réalité essentiellement administrée par A._. Les premiers juges lui ont toutefois objecté à juste titre que le mandat d'administratrice avait pour corollaire l'obligation de se tenir au courant de la marche de la société; la recourante devait en particulier veiller à ce que X._ SA soit gérée dans le respect des règles légales (<ref-law>), sans pouvoir se prévaloir de n'avoir été qu'une administratrice "de paille" (cf. <ref-ruling> consid. 3b; RDAT 1993 I p. 374). En omettant d'exercer cette surveillance, la recourante a commis une faute entraînant sa responsabilité.
6.- Enfin, J._ a allégué en procédure cantonale qu'elle travaillait pour X._ SA en qualité de "directrice" - elle n'aurait effectué dans ce cadre qu'une activité subalterne -, sur la base d'un contrat de travail conclu le 1er mars 1996 et résilié pour le 31 janvier 1999.
Selon elle, son mandat d'administratrice a pris fin avec son contrat de travail et sa responsabilité ne serait plus engagée pour la gestion de la société postérieurement au 31 janvier 1999, pour autant qu'elle le soit pour la période antérieure. Elle s'appuie sur la jurisprudence d'après laquelle le moment de la fin effective du mandat est déterminant pour fixer la durée de la responsabilité de l'administrateur, plutôt que celui de la radiation de l'inscription au registre du commerce (<ref-ruling> consid. 4a).
Sur ce point, les premiers juges ont manifestement omis de constater les faits. Il n'est toutefois pas nécessaire de leur retourner la cause pour qu'ils complètent l'état de fait et statuent à nouveau. En effet, si l'on peut tenir pour vraies, sur la base des pièces figurant au dossier, les circonstances alléguées par la recourante relativement à son contrat de travail, celles-ci ne la dégagent pas de sa responsabilité d'administratrice. En effet, J._ ne pouvait ignorer qu'elle occupait deux fonctions distinctes au sein de la société, dont une seule faisait l'objet du contrat de travail conclu le 1er mars 1996; celui-ci distinguait du reste clairement la fonction de directrice et d'éventuelles autres activités au sein de la société. Dès lors, la résiliation du contrat de travail n'équivalait pas à une révocation du mandat d'administratrice, d'autant qu'une telle révocation aurait nécessité une décision de l'assemblée générale de la société (art. 705 et 725 CO). Si la recourante entendait être déchargée de sa responsabilité avant l'échéance légale ou statutaire de la durée de son mandat (cf. <ref-ruling> consid. 4b) - rien ne permet d'admettre que cette échéance serait survenue avant la faillite, ce que J._ ne soutient du reste pas -, il lui appartenait de présenter sa démission, ce qu'elle a négligé de faire. Son inscription au registre du commerce postérieurement au 31 janvier 1999 ne revêtait donc pas un caractère purement formel, contrairement à ce qu'elle soutient.
7.- La procédure n'est pas gratuite, s'agissant d'un litige qui ne porte pas sur l'octroi ou le refus de prestations d'assurance (art. 134 OJ a contrario). La recourante, qui succombe, supportera les frais de justice (art. 156 al. 1 OJ).

Par ces motifs, le Tribunal fédéral des assurances
prononce :
I. Le recours est rejeté.
II. Les frais de justice, d'un montant de 1800 fr., sont mis à la charge de la recourante et compensés avec l'avance de frais qu'elle a versée.
III. Le présent arrêt sera communiqué aux parties, à B._, au Tribunal des assurances du canton de Vaud et à l'Office fédéral des assurances sociales.
Lucerne, le 15 avril 2002
Au nom du
Tribunal fédéral des assurances
La Présidente de la IVe Chambre :
Le Greffier: