<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://itecfun.com/extern.php?action=feed&amp;fid=61&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[个人知识管理站 / 数据分析]]></title>
		<link>http://www.itecfun.com/index.php</link>
		<description><![CDATA[个人知识管理站 最近发表的主题。]]></description>
		<lastBuildDate>Mon, 29 Oct 2018 08:02:06 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[hadoop 2.7.7 安装过程及问题]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3370&amp;action=new</link>
			<description><![CDATA[<p>WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /test.txt could only be replicated to 0 nodes, instead of 1<br />        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1639)<br />        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:736)<br />        at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)<br />        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcc</p><p>查找了一下原因始datanode没有找到，用jps检测，datanode已经启动了，原因可能是datanode没有关闭防火墙，</p><p>service iptables status 发现防火墙果然没有关闭</p><p>执行service iptables stop 关闭之后，再上传就成功了</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Mon, 29 Oct 2018 08:02:06 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3370&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[linux远程拷贝命令及not a regular file 解决方案]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3369&amp;action=new</link>
			<description><![CDATA[<p>linux 远程拷贝 ：scp<br /> <br />scp 文件名  root@远程ip:/路径/ <br /> <br />将本地home目录下的test.tar的文件拷贝到远程主机192.168.1.23的/home/adm/目录下，则命令为：scp /home/test.tar root@192.168.1.23:/home/adm/  回车后输入密码就可以了 <br /> <br />scp提供了几个选项  在scp后加就行了 <br /> <br />    -p 拷贝文件的时候保留源文件建立的时间。 <br />    -q 执行文件拷贝时，不显示任何提示消息。 <br />    -r 拷贝整个目录   <a href="http://www.2cto.com" rel="nofollow">www.2cto.com</a>  <br />    -v 拷贝文件时，显示提示信息。 <br /> </p><p>linux 下scp传文件时错误 scp: /usr/tools: not a regular file 不能成功传送 解决方案</p><p>1：有可能没权限 chmod 777<br />2:  在使用scp时加上-r 参数<br />scp -r root@192.168.16.5:/usr/tools/xxxx</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Wed, 17 Oct 2018 04:59:45 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3369&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[linux下安装googletest]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3368&amp;action=new</link>
			<description><![CDATA[<p>1、到https://github.com/google/googletest下载最新的googletest，点击download zip;</p><p>2、unzip master.zip</p><p>3、cd进入解压的目录；</p><p>4、./travis.sh，再cmake ./CMakeLists.txt ；</p><p>5、生成了Makefile，make，make install；</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Wed, 17 Oct 2018 02:04:09 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3368&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Centos 安装protobuf 3.6]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3367&amp;action=new</link>
			<description><![CDATA[<p>protobuf是Google开发出来的一个语言无关、平台无关的数据序列化工具，在rpc或tcp通信等很多场景都可以使用。通俗来讲，如果客户端和服务端使用的是不同的语言，那么在服务端定义一个数据结构，通过protobuf转化为字节流，再传送到客户端解码，就可以得到对应的数据结构。这就是protobuf神奇的地方。并且，它的通信效率极高，“一条消息数据，用protobuf序列化后的大小是json的10分之一，xml格式的20分之一，是二进制序列化的10分之一”。</p><p>1、安装</p><p>编译安装protobuf的编译器protoc<br />wget <a href="https://github.com/protocolbuffers/protobuf/archive/v3.6.0.tar.gz" rel="nofollow">https://github.com/protocolbuffers/prot … 6.0.tar.gz</a></p><p>tar zxvf protobuf-3.6.0.tar.gz</p><p>cd protobuf-3.6.0</p><p>./autogen.sh #执行时出现错误</p><p>[root@master protobuf-3.6.0]# ./autogen.sh <br />+ autoreconf -f -i -Wall,no-obsolete<br />./autogen.sh: line 32: autoreconf: command not found</p><p>安装autoreconf,automake</p><p>yum -y install automake autoreconf</p><p>安装完成后，重新执行<br />./autogen.sh</p><p>出现错误</p><p>[root@master protobuf-3.6.0]# ./autogen.sh <br />+ autoreconf -f -i -Wall,no-obsolete<br />configure.ac:104: error: possibly undefined macro: AC_PROG_LIBTOOL<br />&#160; &#160; &#160; If this token and others are legitimate, please use m4_pattern_allow.<br />&#160; &#160; &#160; See the Autoconf documentation.<br />autoreconf: /usr/bin/autoconf failed with exit status: 1</p><p>这个错误的出现，还得安装libtool （为了保证不出错 ，还可安装一个工具：sudo apt-get install libsysfs-dev，这里没装也能成功）<br />yum install libtool</p><p>再次执行</p><p>./autogen.sh<br />执行成功，<br />目录下生成configure 文件</p><p>依次执行<br />./configure </p><p>make</p><p>make check</p><p>make install </p><p>安装完成后，Centos的系统默认安装目录为<br />/usr/local/bin<br />/usr/local/lib,<br />/usr/local/include </p><p>到这一步就可以使用protobuf了<br />$ protoc -I=./ --cpp_out=./ test.proto<br />到test.proto文件所在目录使用命令<br />protoc -I=./ --cpp_out=./ <br />生成C++版本的协议文件<br />一切OK的话，在当前目录看到.h和.cc文件</p><p>编译如果出现找不到符号和链接错误请记得加上链接选项 -lprotobuf <br />并确认你的静态库路径是否生效</p><p>$ echo $LIBRARY_PATH</p><br /><p><strong>附自定义安装：</strong></p><p>protobuf默认安装在 /usr/local 目录<br />你可以修改安装目录通过 ./configure --prefix=命令<br />虽然我是root用户但觉得默认安装过于分散，所以统一安装在/usr/local/protobuf下</p><p>$./configure --prefix=/usr/local/protobuf<br />$ make<br />$ make check<br />$ make install</p><p>到此步还没有安装完毕，在/etc/profile 或者用户目录 ~/.bash_profile<br />添加下面内容<br />####### add protobuf lib path ########<br />#(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径<br />export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/<br />#(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径<br />export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/<br />#执行程序搜索路径<br />export PATH=$PATH:/usr/local/protobuf/bin/<br />#c程序头文件搜索路径<br />export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/<br />#c++程序头文件搜索路径<br />export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/<br />#pkg-config 路径<br />export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Wed, 17 Oct 2018 01:32:23 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3367&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[重启hadoop后，datanode启动不起来的各种原因]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3366&amp;action=new</link>
			<description><![CDATA[<p>datanode启动不起来的各种原因<br />一般在数据节点的log日志信息里能找到导致启动不起来的原因。</p><p>1.Namenode和Datanode的NamenodeID不一致<br />&#160; &#160; 描述：一般在集群多次重新格式化HDFS之后，或者刚安装时会碰到。日志信息如下：</p><p>&#160; java.io.IOException: Incompatible namespaceIDs in /root/tmp/dfs/data:</p><p>&#160; NameNode namespaceID = 1307672299; DataNode namespaceID = 389959598</p><p>解决办法：最直接有效的办法就是修改Datanode上的namenodeID(位于/dfs/data/current/VERSION文件中）或修改NameNode的namespaceID（位于/dfs/name/current/VERSION文件中），使其一致。</p><p>2.Datanode突然不堪重负宕掉<br />&#160; 只需重启坏掉的Datanode或者JobTracker。当集群中的某单个节点出现问题，不必重新重启整个系统，只需重启这个节点，然后会自动连接到整个集群里。</p><p>&#160; 在坏死的节点上输入以下命令：</p><p>&#160; &#160; bin/Hadoop-daemon.sh start DataNode</p><p>&#160; &#160; bin/Hadoop-daemon.sh start jobtracker</p><p>以上方法也可以用于动态加入datanode，允许用户动态将某个节点加入集群中。</p><p>&#160; &#160; 在hadoop集群中，HDFS分布式文件系统和mapreduce计算框架是可以独立部署安装的，在hadoop2中体现很明显，如果只需要使用部分节点进行计算,只需要单独启动resourcemanager和需要使用的结点上的nodemanager即可，查找命令可以参考/hadoop2/sbin/start-yarn.sh中是如何写的就可以找到答案了！ 在hadoop2/sbin/start-yarn.sh脚本中，写了启动resourcemanager和所有节点上的nodemanager，所以只需要参考该脚本文件，就能得到启动单个节点上的nodemanager的方法：</p><p>&#160; &#160; hadoop2/sbin/hadoop-daemon.sh startdatanode</p><p>&#160; &#160; hadoop2/sbin/yarn-daemon.sh nodemanager</p><p>然后执行下集群HDFS的负载均衡即可完成动态添加节点了！</p><p>&#160; 在hadoop1中</p><p>&#160; &#160; bin/Hadoop-daemon.sh --config ./conf start DataNode</p><p>&#160; &#160; bin/Hadoop-daemon.sh --config ./conf start tasktracker</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Tue, 16 Oct 2018 05:49:11 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3366&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Hadoop1.2.1 在关机重启后，namenode启动报错（/dfs/name is in an inconsistent st]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3365&amp;action=new</link>
			<description><![CDATA[<p>Hadoop1.2.1 在关机重启后，namenode启动报错：<br />2018-10-15 19:41:25,850 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.<br />org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /usr/local/src/hadoop-1.2.1/temp/name is in an inconsistent state: storage directory does not exist or is not accessible.<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:304)<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104)<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427)<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.&lt;init&gt;(FSNamesystem.java:395)<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299)<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.NameNode.&lt;init&gt;(NameNode.java:569)<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479)<br />&#160; &#160; at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488)</p><p>发现是因为临时文件hadoop下的 /tmp会被删除掉，解决方法就是修改core-site.xml，添加hadoop.tmp.dir属性：</p><p>&lt;property&gt;<br />&#160; &#160; &lt;name&gt;hadoop.tmp.dir&lt;/name&gt;<br />&#160; &#160; &lt;value&gt;/home/fzuir/Hadoop1.2.1/tmp/hadoop-${user.name}&lt;/value&gt;<br />&lt;/property</p><p>再次启动hadoop就不会出现/dfs/name is in an inconsistent state的错误了</p><p>[root@master bin]# jps<br />47282 Jps<br />37538 DataNode<br />89669 NameNode<br />89818 SecondaryNameNode</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Tue, 16 Oct 2018 03:23:28 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3365&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[数据分析常用的8款工具]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3360&amp;action=new</link>
			<description><![CDATA[<p>Python是数据处理常用工具，可以处理数量级从几K至几T不等的数据，具有较高的开发效率和可维护性，还具有较强的通用性和跨平台性。Python可用于数据分析，但其单纯依赖Python本身自带的库进行数据分析还是具有一定的局限性的，需要安装第三方扩展库来增强分析和挖掘能力。</p><br /><br /><p>Python数据分析需要安装的第三方扩展库有：Numpy、Pandas、SciPy、Matplotlib、Scikit-Learn、Keras、Gensim、Scrapy等，以下是对该第三方扩展库的简要介绍：</p><p><strong>1. Pandas</strong></p><p>Pandas是Python强大、灵活的数据分析和探索工具，包含Series、DataFrame等高级数据结构和工具，安装Pandas可使Python中处理数据非常快速和简单。</p><p>Pandas是Python的一个数据分析包，Pandas最初被用作金融数据分析工具而开发出来，因此Pandas为时间序列分析提供了很好的支持。</p><p>Pandas是为了解决数据分析任务而创建的，Pandas纳入了大量的库和一些标准的数据模型，提供了高效的操作大型数据集所需要的工具。Pandas提供了大量是我们快速便捷的处理数据的函数和方法。Pandas包含了高级数据结构，以及让数据分析变得快速、简单的工具。它建立在Numpy之上，使得Numpy应用变得简单。</p><p>带有坐标轴的数据结构，支持自动或明确的数据对齐。这能防止由于数据结构没有对齐，以及处理不同来源、采用不同索引的数据而产生的常见错误。</p><p>使用Pandas更容易处理丢失数据。<br />合并流行数据库（如：基于SQL的数据库）<br />Pandas是进行数据清晰/整理的最好工具。</p><p><strong>2. Numpy</strong></p><p>Python没有提供数组功能，Numpy可以提供数组支持以及相应的高效处理函数，是Python数据分析的基础，也是SciPy、Pandas等数据处理和科学计算库最基本的函数功能库，且其数据类型对Python数据分析十分有用。</p><p>Numpy提供了两种基本的对象：ndarray和ufunc。ndarray是存储单一数据类型的多维数组，而ufunc是能够对数组进行处理的函数。Numpy的功能：</p><p>N维数组，一种快速、高效使用内存的多维数组，他提供矢量化数学运算。<br />可以不需要使用循环，就能对整个数组内的数据进行标准数学运算。<br />非常便于传送数据到用低级语言编写(C\C++)的外部库,也便于外部库以Numpy数组形式返回数据。<br />Numpy不提供高级数据分析功能，但可以更加深刻的理解Numpy数组和面向数组的计算。</p><p><strong>3. Matplotlib</strong></p><p>Matplotlib是强大的数据可视化工具和作图库，是主要用于绘制数据图表的Python库，提供了绘制各类可视化图形的命令字库、简单的接口，可以方便用户轻松掌握图形的格式，绘制各类可视化图形。</p><p>Matplotlib是Python的一个可视化模块，他能方便的只做线条图、饼图、柱状图以及其他专业图形。 <br />使用Matplotlib，可以定制所做图表的任一方面。他支持所有操作系统下不同的GUI后端，并且可以将图形输出为常见的矢量图和图形测试，如PDF SVG JPG PNG BMP GIF.通过数据绘图，我们可以将枯燥的数字转化成人们容易接收的图表。 <br />Matplotlib是基于Numpy的一套Python包，这个包提供了吩咐的数据绘图工具，主要用于绘制一些统计图形。 <br />Matplotlib有一套允许定制各种属性的默认设置，可以控制Matplotlib中的每一个默认属性：图像大小、每英寸点数、线宽、色彩和样式、子图、坐标轴、网个属性、文字和文字属性。</p><p><strong>4. SciPy</strong></p><p>SciPy是一组专门解决科学计算中各种标准问题域的包的集合，包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算等，这些对数据分析和挖掘十分有用。</p><p>Scipy是一款方便、易于使用、专门为科学和工程设计的Python包，它包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等。Scipy依赖于Numpy，并提供许多对用户友好的和有效的数值例程，如数值积分和优化。</p><p>Python有着像Matlab一样强大的数值计算工具包Numpy；有着绘图工具包Matplotlib;有着科学计算工具包Scipy。 <br />Python能直接处理数据，而Pandas几乎可以像SQL那样对数据进行控制。Matplotlib能够对数据和记过进行可视化，快速理解数据。Scikit-Learn提供了机器学习算法的支持，Theano提供了升读学习框架（还可以使用CPU加速）。</p><p><strong>5. Keras</strong></p><p>Keras是深度学习库，人工神经网络和深度学习模型，基于Theano之上，依赖于Numpy和Scipy，利用它可以搭建普通的神经网络和各种深度学习模型，如语言处理、图像识别、自编码器、循环神经网络、递归审计网络、卷积神经网络等。</p><p><strong>6. Scikit-Learn</strong></p><p>Scikit-Learn是Python常用的机器学习工具包，提供了完善的机器学习工具箱，支持数据预处理、分类、回归、聚类、预测和模型分析等强大机器学习库，其依赖于Numpy、Scipy和Matplotlib等。</p><p>Scikit-Learn是基于Python机器学习的模块，基于BSD开源许可证。 <br />Scikit-Learn的安装需要Numpy Scopy Matplotlib等模块，Scikit-Learn的主要功能分为六个部分，分类、回归、聚类、数据降维、模型选择、数据预处理。</p><p>Scikit-Learn自带一些经典的数据集，比如用于分类的iris和digits数据集，还有用于回归分析的boston house prices数据集。该数据集是一种字典结构，数据存储在.data成员中，输出标签存储在.target成员中。Scikit-Learn建立在Scipy之上，提供了一套常用的机器学习算法，通过一个统一的接口来使用，Scikit-Learn有助于在数据集上实现流行的算法。 <br />Scikit-Learn还有一些库，比如：用于自然语言处理的Nltk、用于网站数据抓取的Scrappy、用于网络挖掘的Pattern、用于深度学习的Theano等。</p><p><strong>7. Scrapy</strong></p><p>Scrapy是专门为爬虫而生的工具，具有URL读取、HTML解析、存储数据等功能，可以使用Twisted异步网络库来处理网络通讯，架构清晰，且包含了各种中间件接口，可以灵活的完成各种需求。</p><p><strong>8. Gensim</strong></p><p>Gensim是用来做文本主题模型的库，常用于处理语言方面的任务，支持TF-IDF、LSA、LDA和Word2Vec在内的多种主题模型算法，支持流式训练，并提供了诸如相似度计算、信息检索等一些常用任务的API接口。</p><p>以上是对Python数据分析常用工具的简单介绍，有兴趣的可以深入学习研究一下相关使用方法!</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Thu, 09 Aug 2018 06:59:55 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3360&amp;action=new</guid>
		</item>
	</channel>
</rss>
