<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات مدرسه علم داده</title>
        <link>https://virgool.io/WordofData/feed</link>
        <description>آموزش پروژه محور هوش مصنوعی</description>
        <language>fa</language>
        <pubDate>2026-06-17 06:20:26</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/jntyljtvphhp/glbqly.png</url>
            <title>مدرسه علم داده</title>
            <link>https://virgool.io/WordofData</link>
        </image>

                    <item>
                <title>آشنایی و بررسی فاز میانی Combine در مُدل Map Reduce</title>
                <link>https://virgool.io/WordofData/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D9%88-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D9%81%D8%A7%D8%B2-%D9%85%DB%8C%D8%A7%D9%86%DB%8C-combine-%D8%AF%D8%B1-%D9%85%D9%8F%D8%AF%D9%84-map-reduce-c5175rlisgwi</link>
                <description>مراحل مدل Map Reduce در دو گره موجود در کلاستر به صورت توزیع شدهدر این مقاله که در دنیای بیگ دیتا  منتشر شده است با هم با فاز میانی Combine در مُدل برنامه نویسی Map Reduce آشنا میشیم و می بینیم کجاها میشه از فاز Combine استفاده کرد و کجاها بهتره از این فاز استفاده نکنیم.آشنایی با Combinerکامباینر، که از آن به Semi-reducer یا Mini-Reducer هم تعبیر می گردد، یک کلاس اختیاری است که عملیات پذیرش ورودی از کلاس مپ و سپس پاس دادن زوج کلیدمقدار خروجی به کلاس ردیوسر را بر عهده دارد.وظیفه اصلی یک کامباینر، خلاصه سازی رکوردهای خروجی کلاس مپ با کلید یکسان است. خروجی کامباینر(مجموعه ای از کلیدمقدارها) بر بستر شبکه، به عنوان ورودی به کلاس ردیوسر ارسال می گردد. نکته مهم اینکه نوع ورودی زوج کلیدمقدار و نوع خروجی زوج کلیدمقدار می بایست یکسان باشند.مزیت کلدی کامباینر اینست که به تفکیک داده ها در چندین گروه مجزی برای فاز ردیوس کمک می کند، چرا که در اینصورت پردازش را بیش از پیش آسان تر می کند.اما قرار نیست همیشه و همه جا این گام استفاده شود. سوالی که مطرح می شود این است که فاز کامباین چه زمانی استفاده نمی شود؟همیشه حضور Combiner ضروری نیستمثال موردی: توییتر. یک فایل دیتای حجیم شامل توییت های کاربران ایران با هشتگ اینترنت در HDFS داریم. هدف این است سری زمانی تعداد تکرار کلمه قطعی در بازه های زمانی مختلف توسط کاربران بررسی شود. فاز Map برای هر Node تعداد تکرار کلمه ضرر را تاریخ های مختلف مشخص می کند. اگر در مرحله Combine تعداد تکرار در تاریخ های مختلف با هم ترکیب گردد رابطه زمانی دیتاها حذف می شود. در این تیپ مسائل نیازی به فاز کامباین نداریم.نکته ای که باید مدنظر قرارگیرد اینست که کامباینر تضمین نمی کند که همیشه روی همه دیتا اعمال شود.بهتر هست کامباینر برای توابعی نظیر SUM استفاده شود، اما توابعی هم هستند که فاز کامباین نمی تواند همیشه روی آنها اعمال گردند، نظیر AVG.وقتی نیازی نیست که دیتا روی دیسک ریخته شود مپ ردیوس فاز کامباین را اعمال نمی کند.وقتی که نوع ورودی دیتاهای زوج کلیدمقدار یکسان نباشند، مپ ردیوس فاز کامباین را اعمال نمی کند.در صورت عدم استفاده از کامباین شاهد افت محسوس ترافیک انتقال دیتا در شبکه هستیم.نکته : اگر کامباینر برای تسک مدنظرمان Set شود، هدوپ خود تصمیم می گیرد با توجه به دیتای موردنظر، کامباینر را اجرا کند یا خیر!فاز کامباین چه زمانی استفاده می شود؟اما حالا که موارد عدم استفاده فاز کامباین را ذکر کردیم، باید ذکر کنیم فاز کامباین چه زمانی استفاده می شود؟کامباین تنها زمانی می تواند استفاده شود که تابع ردیوس هم بصورت commutative ظاهر می شود و هم بصورت associative.Commutative: ترتیب عملوندها تاثیری در نتیجه عبارت ندارند. مثال : 10+11+12=12+11+10Associative: ترتیب عملوندها تاثیری در نتیجه عبارت ندارند. مثال: (10+11)+12=12+(11+10)مورد دیگر زمانی که فاز مپ دیتاهای فوق العاده حجیمی را در برابر کلیدهای یکسان تولید می کند.(شمارش کلمات)نکته: برای کاهش ترافیک شبکه ، توصیه می شود تا کامباین را Set کنیم.وقتی که نوع ورودی دیتاهای زوج کلیدمقدار یکسان باشند، مپ ردیوس فاز کامباین را اعمال می کند.هنگامی که Buffer نیاز به Flush داشته باشد، کامباین همیشه فراخوانی می گردد.نکته مهم: توابع کامباین از پیش نوشته شده نیستند و توسط توسعه دهنده ها نوشته می شوند.</description>
                <category>مدرسه علم داده</category>
                <author>محمد حیدری</author>
                <pubDate>Thu, 09 Apr 2020 19:05:14 +0430</pubDate>
            </item>
                    <item>
                <title>تحلیل و پردازش گراف با GraphFrames</title>
                <link>https://virgool.io/WordofData/%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D9%88-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%DA%AF%D8%B1%D8%A7%D9%81-%D8%A8%D8%A7-graphframes-g9wokvgp0iih</link>
                <description>سلام دوستان عزیزم. من این مقاله رو در دنیای بیگ دیتا هم نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنید، چون اینجا امکان داره تصاویر به درستی بارگزاری نشده باشن و اونجا کامل و جامع موجود هستند.آشنایی با GraphFramesگراف فریم ها هم مشابه گراف ایکس فرآیند تحلیل و پردازش گراف های حجیم رو انجام میدن اما چون بر مبنای DataFrames هستند بر خلاف گراف ایکس که مستقیما سوار بر RDD هست یه سری مزایا دارن:پشتیبانی از رابط های Python, Java &amp; Scalaامکان ایجاد پرس و جوهای قدرتمند بر بستر Spark SQL و DataFramesامکان ذخیره و بارگزاری گراف: گراف فریم ها از دیتاسورس های دیتافریم به طور کامل پشتیبانی می کنن. به همین خاطر ما می تونیم گرافمون رو با استفاده از فرمت های مختلف مثل Parquet, JSON, CSV  بخونیم و بنویسیم.در گراف فریم گره ها و یال ها در قالب دیتافریم ذخیره میشن و ما می تونیم هر نوع داده ای که داریم رو روی هر گره و یالی ذخیره کنیم.ساخت گراف فریمما می تونیم گراف فریم رو بر اساس دیتافریم رئوس و یالهایی که داریم بسازیم. پس شد:یه Vertex DataFrame: دیتافریمی هست که یه ستون به نام “id” داره که unique IDs رو به ازای هر راس در گراف تو خودش داره.یه Edge DataFrame: دیتافریمی هست که باید دو تا ستون “src”و “dst” داشته باشن. منظور از این دو تا ستون هم مبدا و مقصد گره مون هست که قراره توی گرافمون Traverse کنه.یه گراف حتی می تونه از یه single DataFrame ساخته باشه که فقط لیست یال ها (edge information.) رو تو خودش داره.تو این بخش می خوایم یه گراف فریم از دیتافریم ها رئوس و یالهامون بسازیم.قطعه کد اسکالاimport org.graphframes.GraphFrameval v = sqlContext.createDataFrame(List((&quot;a&quot;, &quot;Alice&quot;, 34),(&quot;b&quot;, &quot;Bob&quot;, 36),(&quot;c&quot;, &quot;Charlie&quot;, 30),(&quot;d&quot;, &quot;David&quot;, 29),(&quot;e&quot;, &quot;Esther&quot;, 32),(&quot;f&quot;, &quot;Fanny&quot;, 36),(&quot;g&quot;, &quot;Gabby&quot;, 60))).toDF(&quot;id&quot;, &quot;name&quot;, &quot;age&quot;)val e = sqlContext.createDataFrame(List((&quot;a&quot;, &quot;b&quot;, &quot;friend&quot;),(&quot;b&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;c&quot;, &quot;b&quot;, &quot;follow&quot;),(&quot;f&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;f&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;d&quot;, &quot;friend&quot;),(&quot;d&quot;, &quot;a&quot;, &quot;friend&quot;),(&quot;a&quot;, &quot;e&quot;, &quot;friend&quot;))).toDF(&quot;src&quot;, &quot;dst&quot;, &quot;relationship&quot;)val g = GraphFrame(v, e)قطعه کد پایتونv = sqlContext.createDataFrame([(&quot;a&quot;, &quot;Alice&quot;, 34),(&quot;b&quot;, &quot;Bob&quot;, 36),(&quot;c&quot;, &quot;Charlie&quot;, 30),(&quot;d&quot;, &quot;David&quot;, 29),(&quot;e&quot;, &quot;Esther&quot;, 32),(&quot;f&quot;, &quot;Fanny&quot;, 36),(&quot;g&quot;, &quot;Gabby&quot;, 60)], [&quot;id&quot;, &quot;name&quot;, &quot;age&quot;])e = sqlContext.createDataFrame([(&quot;a&quot;, &quot;b&quot;, &quot;friend&quot;),(&quot;b&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;c&quot;, &quot;b&quot;, &quot;follow&quot;),(&quot;f&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;f&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;d&quot;, &quot;friend&quot;),(&quot;d&quot;, &quot;a&quot;, &quot;friend&quot;),(&quot;a&quot;, &quot;e&quot;, &quot;friend&quot;)], [&quot;src&quot;, &quot;dst&quot;, &quot;relationship&quot;])g = GraphFrame(v, e)این گراف فریمی که ساختیم تو GraphFrames package به این صورت در دسترس هستfrom graphframes.examples import Graphsg = Graphs(sqlContext).friends()کوئری روی گراف با طعم SQL ?برای من که چند سالی هست روی گراف کار میکنم این یه خبر خوبه. از یه طرف خیلی از ما خیلی وقت هست با SQL کار کردیم و حالا می تونیم روی مسائل گراف ازش استفاده کنیم. نیازی نیست مثل Neo4j بریم حتما Cypher کار کنیم هرچند اونم بجاش ارزشمنده و قدرتمند.قطعه کد اسکالاimport org.graphframes.{examples,GraphFrame}val g: GraphFrame = examples.Graphs.friendsg.vertices.show()// +--+-------+---+// |id|   name|age|// +--+-------+---+// | a|  Alice| 34|// | b|    Bob| 36|// | c|Charlie| 30|// | d|  David| 29|// | e| Esther| 32|// | f|  Fanny| 36|// | g|  Gabby| 60|// +--+-------+---+g.edges.show()// +---+---+------------+// |src|dst|relationship|// +---+---+------------+// |  a|  b|      friend|// |  b|  c|      follow|// |  c|  b|      follow|// |  f|  c|      follow|// |  e|  f|      follow|// |  e|  d|      friend|// |  d|  a|      friend|// |  a|  e|      friend|// +---+---+------------+import org.apache.spark.sql.DataFrameval vertexInDegrees: DataFrame = g.inDegreesg.vertices.groupBy().min(&quot;age&quot;).show()val numFollows = g.edges.filter(&quot;relationship = &#x27;follow&#x27;&quot;).count()قطعه کد پایتونfrom graphframes.examples import Graphsg = Graphs(sqlContext).friends()g.vertices.show()# +--+-------+---+# |id|   name|age|# +--+-------+---+# | a|  Alice| 34|# | b|    Bob| 36|# | c|Charlie| 30|# | d|  David| 29|# | e| Esther| 32|# | f|  Fanny| 36|# | g|  Gabby| 60|# +--+-------+---+g.edges.show()# +---+---+------------+# |src|dst|relationship|# +---+---+------------+# |  a|  b|      friend|# |  b|  c|      follow|# |  c|  b|      follow|# |  f|  c|      follow|# |  e|  f|      follow|# |  e|  d|      friend|# |  d|  a|      friend|# |  a|  e|      friend|# +---+---+------------+vertexInDegrees = g.inDegreesg.vertices.groupBy().min(&quot;age&quot;).show()numFollows = g.edges.filter(&quot;relationship = &#x27;follow&#x27;&quot;).count()زیرگرافتو گراف ایکس برای پیدا کردن یه زیرگراف از متد subgraph() کمک می گرفتیم به این شکل(یال، گره مبدا، گره مقصد).اما گراف فریم میاد خیلی قوی تر عمل می کنه و برای پیدا کردن یه زیرگراف، موتیف یابی + فیلترهای دیتافریم رو با هم ترکیب می کنه. ما از سه تا متد کمکی واسه پیدا کردن زیرگراف بهره می بریم:filterVertices(condition), filterEdges(condition), dropIsolatedVertices.که به ترتیب میان رئوس مدنظر، یالهای مدنظر رو انتخاب می کنن و فیلتر می زنن روش و رئوس ایزوله رو حذف میکنن. تو بخش اول یه زیرگراف ساده رو با استفاده از vertex and edge filters پیدا می کنیم به این شکلقطعه کد اسکالاimport org.graphframes.{examples,GraphFrame}val g: GraphFrame = examples.Graphs.friends// Select subgraph of users older than 30, and relationships of type &quot;friend&quot;.// Drop isolated vertices (users) which are not contained in any edges (relationships).val g1 = g.filterVertices(&quot;age &gt; 30&quot;).filterEdges(&quot;relationship = &#x27;friend&#x27;&quot;).dropIsolatedVertices()یک مثال شبکه های اجتماعیما یه سری کاربر داریم که با هم در ارتباطن که مشخصه. یه سری سوالات مثل:کدوم کاربر تو شبکه از همه تاثیرگذار تره؟کاربر الف و ب همدیگرو نمی شناسن اما امکانش هست اونا رو با هم آشنا کنی؟ https://databricks.com/wp-content/uploads/2016/03/social-network-graph-diagram.png این تیپ سوالاتو می شه با گراف بهش رسید و جواب داد.گراف فریم هم می تونه دیتاها رو در قالب گره و یال ذخیره کنه که تو مثال ما هر کاربر نام و سن بخصوص داره و تو شبکه ها با هم در ارتباطن https://databricks.com/wp-content/uploads/2016/03/social-network-graph-verticies.png  https://databricks.com/wp-content/uploads/2016/03/social-network-graph-edges.png کوئری های سادهبا گراف فریم، کوئری زدن خیلی آسونه (به لطف دیتافریم). چرا که گره و یال تو دیتافریم ذخیره میشن و خیلی کوئری هامون فقط کوئری های (SQL) دیتافریم هستند. با هم یه مثال ساده رو بررسی می کنیم و می خوایم بدونیم کدوم کاربر سنش بیشتر 35 هست؟ می تونیم روی گره های گراف اینطوری کوئری بزنیم:graph.vertices.filter(&quot;age&gt;35&quot;)یه مثال دیگه و اون اینکه کدوم کاربرها حداقل 2 تا Follower دارن؟ ما می تونیم مجموع درجات ورودی رو با هم ترکیب کنیم و به جواب برسیم.graph.inDegrees.filter(&quot;inDegree&gt;=2&quot;)کوئری های متوسطگراف فریم همه الگوریتم های موجود در گراف ایکس رو روی Scala, Java, Python ساپورت میکنه. خروجی یه الگوریتم روی گراف یا دیتافریم هستش یا گراف فریم. بعنوان مثال ما میخوایم بدونیم مهمترین شخص تو شبکه مون کیه؟ میآیم از الگوریتم PageRank معروف گوگل کمک می گیریم. خروجی ما هست:results = g.pageRank(resetProbability=0.15, maxIter=10)display(results.vertices)https://databricks.com/wp-content/uploads/2016/03/PageRank-results.pngالگوریتم هایی که گراف فریم ازشون پشتیبانی میکنهالگوریتم PageRank: واسه شناسایی گره های مهم تو گرافالگوریتمShortest paths: پیدا کردن کوتاه ترین مسیرالگوریتمConnected Components: گروه بندی راس ها به زیرگروه های متصلالگوریتمStrongly Connected Components: سافت ورژن مورد شماره 3الگوریتمTriangle Count: واسه شمارش تعداد دفعاتی که راس عضو سه تایی هاست.الگوریتمLabel Propagation Algorithm – LPA واسه تشخیص اجتماعاتمقایسه GraphFrames و GraphXجداول گره ها و یال ها در گراف ایکس https://spark.apache.org/docs/latest/img/property_graph.png مصورسازی فرآیند موتیف مچینگ در گراف https://image.slidesharecdn.com/taleoftwographalgorithms-sparksummit2017europe-180109235531/95/tale-of-two-graph-frameworks-graph-frames-and-tinkerpop-40-638.jpg?cb=1515542196 در ادامهمی تونید پکیج گراف فریم رو از اینجا دانلود کنید. اینم گیت هاب گراف فریم.فقط یادتون نره قبل شروع اینو لود کنید و حتما باید اسپارک ترجیحا نسخه های جدیدتر روی سیستم تون نصب باشه البته فعلا Preview نصب نکنین$SPARK_HOME/bin/spark-shell --packages graphframes:graphframes:0.8.0-spark3.0-s_2.12&lt;br/&gt; </description>
                <category>مدرسه علم داده</category>
                <author>محمد حیدری</author>
                <pubDate>Tue, 07 Apr 2020 12:12:18 +0430</pubDate>
            </item>
                    <item>
                <title>اسپارک چطور از هدوپ استفاده می کند؟</title>
                <link>https://virgool.io/WordofData/%D8%A7%D8%B3%D9%BE%D8%A7%D8%B1%DA%A9-%DA%86%D8%B7%D9%88%D8%B1-%D8%A7%D8%B2-%D9%87%D8%AF%D9%88%D9%BE-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%85%DB%8C-%DA%A9%D9%86%D8%AF-dj9ttjzjree0</link>
                <description>سلام دوستان عزیزم. قبل از هر چیزی بگم من این مطلب رو در وب سایت دنیای بیگ دیتا نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنیدمقدمهنکته مهمی که می بایست مورد توجه قرار گیرد اینست که هدوپ یک اکوسیستم پردازش کلان داده است که ابزارهای متنوعی می توانند در این اکوسیستم حضور داشته باشند و با هدوپ کار کنند. یکی از این ابزارها موتور پردازشی یکپارچه اسپارک است که به منظور دسترسی به لایه ذخیره سازی داده در فایل سیستم HDFS می تواند با هدوپ یکپارچه شود.لایه ذخیره سازی دادهاسپارک به تنهایی دارای لایه ذخیره‌سازی و ماندگاری داده نیست و می‌بایست داده‌ها یا به صورت محلی وارد این ابزار شوند و یا اینکه از فایل سیستم توزیع‌شده هدوپ و یا Amazon S3 استفاده کنند.زمان بندی وظایف پردازشیاسپارک وظایف پردازشی خودش را به صورت تک ‌سیستمی زمانبندی می‌کند و از روش‌های دیگر زمانبندی وظایف پشتیبانی نمی‌کند.Yarn وارد می شود و به کمک این موتور پردازشی در جهت زمانبندی توزیع‌شده وظایف آن می‌شتابد.یک دیتابیس؟!هدوپ نه به تنهایی و با کمک Hive یا Hbase می تواند نقش یک دیتابیس را ایفا کند.اما اسپارک به دلیل نداشتن لایه ذخیره‌سازی به خودی خود نمی‌تواند نقش یک دیتابیس را بازی کند.پردازش استریم دادهدر مقابل اگر اسپارک را به هدوپ متصل کنید می‌توانید داده‌ها را به صورت درون‌حافظه‌ای و استریم پردازش کنید.</description>
                <category>مدرسه علم داده</category>
                <author>محمد حیدری</author>
                <pubDate>Sat, 04 Apr 2020 00:05:49 +0430</pubDate>
            </item>
                    <item>
                <title>دیتابیس گرافی NEO4J</title>
                <link>https://virgool.io/WordofData/%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%DA%AF%D8%B1%D8%A7%D9%81%DB%8C-neo4j-lrpyeag06lfx</link>
                <description>سلام دوستان عزیزم. قبل از هر چیزی بگم من این مطلب رو در وب سایت دنیای بیگ دیتا نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنید. مقدمه دیتابیس گرافی Neo4j مُلهَم از اویلر و تئوری گراف است که از مدل داده ای گره ها، یال ها تبعیت می کند. این دیتابیس قابلیت مناسب برای طراحی یک سیستم جست و جو را دارا می باشد که به عنوان نمونه می توان گراف جست و جوی فیس بوک مبتنی بر Neo4j را مثال زد. این دیتابیس در اصل بر اساس جاوا است اما دارای API های گوناگون برای زبان های برنامه نویسی مطرح مانند جاوا، سی‌شارپ، پایتون، جاوااسکریپت، روبی، پی‌اچ‌پی، آر، … نیز می باشد. Neo4j برای کاربردهایی که گراف را بصورت دوره ای بروزرسانی می کنند اما بار خواندن آنها بسیار بالاست مناسب است. به لطف این دیتابیس گرافی در مقایسه با دیتابیس های رابطه ای دیگر نیازی به نوشتن join های پیچیده نیست و  با پیمایش و حرکت در گراف میتوان انواع پرس و جوهای های متنوع را انجام داد، اما از جمله نقاط ضعف این دیتابیس عدم پشتیبانی از تکنیک Sharding (بخش بندی داده) است، چرا که مساله ریاضی تقسیم بهینه گراف بزرگ در بین مجموعه ای از سرویس دهنده ها از جمله مسائل NP Complete (پرهزینه) است. اما در نسخه Enterprise این دیتابیس، به منظور برقراری High Availability، از Causal Clustering پشتیبانی می کند که Read-Write را در Core Server ها و multiple read only را در replica servers ها ممکن می سازد.در مجموع می توان مزایا و معایب این دیتابیس را در قالب نکات ذیل برشمرد:مزایارتبه اول دیتابیس های گرافی دنیا بر اساس وب سایت معتبر db-engines.comیادگیری آسان و سهولت در استفادهکاهش استفاده از حافظهبکاپ‌گیری حرفه‌ایقابلیت Schema انعطاف‌پذیرزبان پرس و جوی Cypher10 تا 100 برابر کدنویسی کمتر نسبت به SQLسرعت بالادرایور برای زبان‌های جاوا، سی‌شارپ، پایتون، جاوااسکریپت، روبی، پی‌اچ‌پی، آر، …پشتیبانی از فریمورک‌های اِسپرینگ، جَنگو، لاراول و …معایبعدم پشتیبانی از تکنیک Sharding (بخش بندی داده)در ادامه با هم یک نمونه کوئری را بررسی می کنیم که پیاده سازی آن با SQL بسیار پیچیده بوده و مقرون به صرفه نخواهد بود در حالی که می توان به لطف دیتابیس گرافی Neo4j نمونه های پیچیده چنینی را پیاده سازی کرد.کاربردهای صنعتیسیستم های توصیه گر Near Real Timeتشخیص تقلب و پولشویی در صنعت بانک و بیمهجستجوی گراف محورپیاده سازی الگوریتم های مسیریابی شبکه های کامپیوترییک نمونه کوئری:اساتیدی که در حال حاضر مشغول به پژوهش در حوزه کلان داده در دانشگاه استنفورد هستند، زیر چهل سال سن دارند، در ده سال گذشته ، در یکی از دانشگاه های اروپا تحصیل کردند و استاد راهنمایی که داشتند اصالتا هلندی بوده است و تابحال دستِ کم سه پژوهش در یکی از ژورنال های معتبر بیگ دیتا با ضریب تاثیر بالای سه، منتشر کرده اند و حداقل سه سال سابقه کار در صنعت در یکی از کمپانی های آمریکایی را دارند&amp;amp;lt;br/&amp;amp;gt; </description>
                <category>مدرسه علم داده</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 03 Apr 2020 21:37:15 +0430</pubDate>
            </item>
                    <item>
                <title>پلتفرم CLOUDERA، اولین پلتفرم یکپارچه تحلیل بیگ دیتا در سطح سازمانی</title>
                <link>https://virgool.io/WordofData/%D9%BE%D9%84%D8%AA%D9%81%D8%B1%D9%85-cloudera-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%BE%D9%84%D8%AA%D9%81%D8%B1%D9%85-%DB%8C%DA%A9%D9%BE%D8%A7%D8%B1%DA%86%D9%87-%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D8%A8%DB%8C%DA%AF-%D8%AF%DB%8C%D8%AA%D8%A7-%D8%AF%D8%B1-%D8%B3%D8%B7%D8%AD-%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86%DB%8C-pfg4g4f2obik</link>
                <description>سلام دوستان عزیزم. قبل از هر چیزی بگم من این مطلب رو در وب سایت دنیای بیگ دیتا نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنید. آشنایی با Clouderaشرکت Cloudera شرکتی مستقر در ایالات متحده که در سال 2008 تاسیس شده است رسالتی مشابه MapR و Hortonworks (که در حال حاضر با هم تلفیق شدند) را ایفا می کند. این شرکت یک پلتفرم مبتنی بر هدوپ ایجاد کرده اند که با محبوب ترین نرم افزارهای آپاچی هدوپ به منظور تحلیل بیگ دیتا یکپارچه شده است. هدوپ تنها یک نرم افزار یا پلتفرم نیست، هدوپ یک اکوسیستم است که قلب تپنده پروژه های مهم تحلیل بیگ دیتا تلقی می شود.اما چرا سازمان ها از Cloudera استفاده می کنند؟اساسا ایجاد و کانفیگ یک کلاستر به صورت دستی و نه خوکار کار زمان بری است، بررسی هر نُود در کلاستر به صورت تک به تک وقتی نودها و کلاسترهای زیادی داریم، کانفیگ هر یک از کلاسترها، استقرار سرویس های مدنظرمان و راه اندازی مجدد هر یک از سرویس ها در یک محیط توزیع شده اشکال عمده ای تلقی می شود و نیازمند حجم عظیمی از خودکار سازی فرآیندها به منظور مدیریت سرویس ها است. Cloudera به منظور حل این مشکلات و صرفه جویی در مصرف زمان، هزینه وحتی اعصاب ? توزیع هدوپی اختصاصی را به منظور نصب سرویس های مدنظر و آپدیت کانفیگ کلاسترها ارائه کرده است که تنها با چند کلیک زیرساخت هدفمندی را به منظور تحلیل بیگ دیتا به ارمغان می آورد.شرکت Cloudera با ارائه اولین پلتفرم یکپارچه برای بیگ دیتا ، انقلابی در مدیریت داده های سازمانی ایجاد می کند. نام محصول مهم این شرکت در عرصه بیگ دیتا، Enterprise Data Hub که به اختصار CDH نامیده می شود می باشد. Cloudera  پلتفرم اختصاصی خود را به منظور ذخیره ، پردازش و تجزیه و تحلیل تمامی داده های خود در اختیار شرکت ها قرار می دهد و این امکان را فراهم می کند تا ارزش سرمایه گذاری های موجود را افزایش دهند و در عین حال راه های جدیدی را برای استخراج ارزش از مجموعه داده های عظیم خود فراهم کنند. درآمد اصلی این شرکت از راه سرویس های حرفه ای است که به منظور سهولت در یکپارچه سازی بیگ دیتا در شرکت ها ارائه می دهند. Cloudera سرویس هایی تحت عنوان Impala و Kudu را توسعه داده است که فرآیند یکپارچه سازی هدوپ و نِرخ پاسخگویی این چارچوب را بهبود بخشیده است. به عنوان جمع بندی می توان گفت مزیت رقابتی این شرکت ارائه یک پلتفرم یکپارچه به منظور تحلیل بیگ دیتا در سطح سازمان است هر چند شرکت های دیگری نظیر Databricks نیز با ارائه پلتفرم یکپارچه تحلیل داده که مبتنی بر Spark بر بستر Cloud می باشند در حال حاضر بسیار فعال هستند. CEO شرکت Databricks آقای دکتر علی قدسی فارغ التحصیل دانشگاه کالیفرنیا در برکلی می باشند. ان شاالله در مقاله ای مجزا به بررسی Databricks و نوآوری های این شرکت می پردازیم.همانطور که مقاله انتشار نسخه 7 پلتفرم Cloudera بررسی کردیم و در تصویر فوق مشخص است، در لایه Data Consistency, Governance, Security  ابزارهایی نظیر Apache Ranger, Apache Altas و Apache KNOX حضور دارند.</description>
                <category>مدرسه علم داده</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 03 Apr 2020 21:35:25 +0430</pubDate>
            </item>
                    <item>
                <title>انباره داده HIVE</title>
                <link>https://virgool.io/WordofData/%D8%A7%D9%86%D8%A8%D8%A7%D8%B1%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-hive-klz11oehca95</link>
                <description>سلام دوستان عزیزم. قبل از هر چیزی بگم من این مطلب رو در وب سایت دنیای بیگ دیتا نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنید.آشنایی با Hiveانباره داده Hive که در Facebook توسط مهندسان این شرکت توسعه داده شده است یک رابط کاربری شبیه به SQL دارد که بروی ساختار فایل سیستم آپاچی هدوپ یا سایر ساختارهای سازگار نظیر Amazon S3 اجرا می شود و به منظور خلاصه سازی داده ها، پرس و جو و تجزیه و تحلیل آنها بکار می رود. در نتیجه دستورات بسیار شبیه به SQL خواهند بود. انباره داده Hive به منظور ایجاد قابلیت پرس و جوهای مبتنی بر زبان قدرتمند SQL بر روی داده های Structured در HDFS توسعه پیدا کرد. در بیانی ساده تر Hive ابزاری به منظور تبدیل دستورات SQL به فرآیند Map Reduce می باشد. پس دستورات Hive در قالب Map Reduce Jobs اجرا می شوند. پس متوجه شدیم مزیت کلیدی این ابزار توانایی کار با  ستورات SQL در اکوسیستم هدوپ می باشد. همانطور که در عنوان مقاله نیز می بینم، ، Hive یک انبار داده در اکوسیستم هدوپ است که مسئولیت خواندن، نوشتن و مدیریت مجموعه داده‌های بزرگ را در یک محیط توزیع شده و با استفاده از واسطی مانند SQL، برعهده دارد.انباره داده Hive با دارا بودن CLI – خط فرمان خود، پیاده سازی دستورات HQL را مقدور می سازد و همانطور که ادامه نیز اشاره خواهیم داشت با استفاده از درایور پایگاه داده‌ی جاوا (JDBC) و درایور پایگاه داده‌ی اشیاء (ODBC) اتصال ما به دیتابیس های مدنظرمان را مقدور می سازداین انباره داده از یک زبان پرس و جو مشابه SQL به نام HiveQL بهره می برد که  پرس و جوها را به صورت صریح به موتورهای پردازشی نظیر Map Reduce, Tez یا Spark تبدیل می کند. از جمله ویژگی های Hive می توان به موارد ذیل اشاره کرد:امکان ساخت UDF – User Defined Functions به منظور پیش پردازش دادهذخیره سازی Metadata – فراداده در RDBMS که به طور قابل توجهی زمان انجام کنترل های معنایی در هنگام اجرای پرس و جو را کاهش می دهد.امکان Indexing روی رکوردهای دیتابیس به منظور افزایش سرعت و عملکرد پرس و جوپشتیبانی از فرمت های داده های نظیر Text File. SequenceFile. RCFile. Avro Files. ORC Files. Parquetمفهومی تحت عنوان Metastore در Hive وجود دارد که به عنوان یک فضا جهت ذخیره سازی Hive Metadata کاربرد دارد. Metastore درون خود از یک دیتابیس رابطه ای کوچک که بطور پیش فرض Apache Derby است بهره می برد که وظیفه ذخیره سازی داده های مربوطه را داراست.سرویس های موجود در Hive عبارتند از:HiveServer2Hive MetastoreHCatalog + WebHcatBeeline &amp; Hive CLIThrift clientFileSystem :: HDFS and other compatible filesystems like S3Execution engine :: MapReduce, Tez, SparkHive Web UI (added in Hive 2.x). Maybe also Tez or Spark UI, but not reallyهمانطور که مشخص هست Hive Service شامل HiveServer2 که گاها از آن به Thrift Server نام برده می شود، درایور، کامپایلر و یک موتور اجرایی نظیر Map Reduce, Tez یا Spark می باشد. اما تمامی این موارد در HS2 موجود می باشند و خود Hive شاملHS2(includes hs2 or thrift server, Compiler, Execution Engine)MetaStoreWebHCatمی باشد.&amp;amp;lt;br/&amp;amp;gt; </description>
                <category>مدرسه علم داده</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 03 Apr 2020 21:26:32 +0430</pubDate>
            </item>
                    <item>
                <title>دیتابیس های SQL و NOSQL به همراه بررسی تئوری CAP</title>
                <link>https://virgool.io/WordofData/%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%87%D8%A7%DB%8C-sql-%D9%88-nosql-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%AA%D8%A6%D9%88%D8%B1%DB%8C-cap-vwvoq6wi3grb</link>
                <description>سلام دوستان عزیزم. قبل از هر چیزی بگم من این مطلب رو در وب سایت دنیای بیگ دیتا نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنید. در این مقاله قصد داریم بصورت کوتاه مقایسه ای ما بین مزایا و معایب دیتابیس های SQL و NoSQL داشته باشیم و مفاهیم تئوری CAP را با هم مرور کنیم.دیتابیس های SQLمزایارفع اشکالات در طول سالیان جاریکارآمدی بسیار بالاکاملا شناخته شدهتوانایی انجام عملیات های پیچیدهداشتن ابزارهای متنوعمعایبمحدودیت سخت افزاریعدم تحمل خطاعدم توانایی مقیاس پذیری افقیهزینه بالاعدم پشتیبانی از داده های Sparse: فرض کنید بخواهید یک ماتریس 100000000 در 10000000 را در SQL ذخیره کنید که فقط 1000 نقطه آن Fill شده است و ما بقی Null هستند. تصور کنید چه فشاری قرار است سرور متحمل شود.عدم پشتیبانی از داده های بدون ساختارتحمل هدررفت زمان زیاد در صورت تغییر ارتباطات و کلیدهای اصلی در جداولدیتابیس های NoSQLدر واقع NoSQL نگاه جدیدی به فرآیند ذخیره سازی داده دارد که داده ها را بصورت Key:Value ذخیره می کند. در اینجا ما بسیاری از امکانات SQL را نداریم. Foreign Key نداریم. دیتای ما غالبا De-Normalized می باشد، مساله ای که ما در SQL در نقطه مقابلش تلاش می کردیم که داده را در سطوح مختلف از 1NF تا … نرمالسازی کنیم. Secondary Key موجود نیست و مفهوم Transaction عملا ملغی است و مهمترین نکته اینکه فیت محیط های Distribute می باشند.خب Join معنای خاصی ندارد اما ممکن است بعضی دیتابیس ها امکان Join را به ما بدهند اما با امکانات Join که در امثال دیتابیس های اوراکل و SQL Server و MySQL می بینیم متفاوت است.افزونگی فراوان داریممعمولا حداقل Replica Factor = 3 می باشد.امکان ذخیره سازی داده های Sparse فراهم است.بصورت پیش فرض از کلاستر استفاده می کنند اما ممکن است به صورت Single Server هم پیاده سازی شوند.به منظور صرفه جویی در مصرف هزینه که Affordability داشته باشیم از Commodity Hardware استفاده می کنیم. (کامپیوترهای ارزان قیمت)قابلیت مقیاس پذیری بصورت افقی را دارند.یک تئوری به نام CAP داریم که می گوید هر سامانه داده ای که طراحی کنیم روی یکی از ضلع های این مثلث قرار می گیرد.در این بین RDBMS ها AC دارند که به ترتیب به محض اینکه یک Request روی داده می زنیم در لحظه مشخص Response مون رو می گیریم و به محض اینکه داده رو نوشتیم قابلیت خواندن پیدا می کند. سیستم هایی مثل Amazon Dynamo و دیتابیس هایی که از روی اون ساخته شدن مثل Cassandra، هم AP دارند. Availability صدردصد دارند به همراه Partition Tolerance اما Consistency بصورت صدردصد ندارند. بعنوان مثال یه کلاینت که Write می کند کلاینت بعدی ممکن است دیتای قدیمی را مشاهده کند. البته Consistency در Cassandra قابل تنظیم است و می تونیم بگیم Partition Consistency نمی خوایم و و Full Consistency می خوایم. اگر این کارو کنیم انگار این دیتابیس رو نابود کردیم!!! و دیگه قابل استفاده نیست.  (ما نمی تونیم خاصیت ذاتی یک موجودیت رو دستخوش تغییراتمون کنیم). امثال BigTable و HBase که از روی اون ساخته شدن دارای Consistency و Partition Tolerance هستند اما در رابطه با دیتابیس HBase باید گفت فاقد Availability است یعنی ممکن است کلاینت به دیتابیس مراجعه کند و پیغام Retry را مشاهده کند چرا که شاید سرورش Down باشد.</description>
                <category>مدرسه علم داده</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 03 Apr 2020 21:22:20 +0430</pubDate>
            </item>
            </channel>
</rss>