头文件
#include <unistd.h>
函数原型
int link (const char * oldpath,const char * newpath)
说明
link()以参数newpath指定的名称来建立一个新的连接(硬连接)到参数oldpath所指定的已存在文件。如果参数newpath指定的名称为一已存在的文件则不会建立连接。函数在执行成功时则返回0,失败时则返回-1,错误原因存于errno。 link()所建立的硬连接无法跨越不同文件系统,如果需要请改用symlink()。
errno错误代码:
EXDEV 参数oldpath与newpath不是建立在同一文件系统。
EPERM 参数oldpath与newpath所指的文件系统不支持硬连接
EROFS 文件存在于只读文件系统内
EFAULT 参数oldpath或newpath 指针超出可存取内存空间。
ENAMETOLLONG 参数oldpath或newpath太长
ENOMEM 核心内存不足
EEXIST 参数newpath所指的文件名已存在。
EMLINK 参数oldpath所指的文件已达最大连接数目。
ELOOP 参数pathname有过多符号连接问题
ENOSPC 文件系统的剩余空间不足。
EIO I/O 存取错误。
范例
/* 建立/etc/passwd 的硬连接为pass */ #include<unistd.h>main(){link(/etc/passwd,pass)}
如何在linux下安装hadoop建议使用自动化部署吧。 这个还是不太难做到哦。 能否看一下my网名呢?帮助搞定一下
一、前期准备:
下载hadoop: :hadoop.apache./core/releases.
:hadoop.apache./mon/releases.
:apache./dyn/closer.cgi/hadoop/core/
:labs.xiaonei./apache-mirror/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz
:labs.xiaonei./apache-mirror/hadoop/
二、硬体环境
共有3台机器,均使用的CentOS,Java使用的是jdk1.6.0。
三、安装JAVA6
sudo apt-get install sun-java6-jdk
/etc/environment
开启之后加入:#中间是以英文的冒号隔开,记得windows中是以英文的分号做为分隔的
CLASSPATH=.:/usr/local/java/lib
JAVA_HOME=/usr/local/java
三、配置host表
[root@hadoop ~]# vi /etc/hosts
127.0.0.1 localhost
192.168.13.100 namenode
192.168.13.108 datanode1
192.168.13.110 datanode2
[root@test ~]# vi /etc/hosts
127.0.0.1 localhost
192.168.13.100 namenode
192.168.13.108 datanode1
[root@test2 ~]# vi /etc/host
127.0.0.1 localhost
192.168.13.100 namenode
192.168.13.110 datanode2
新增使用者和使用者组
addgroup hadoop
adduser hadoop
usermod -a -G hadoop hadoop
passwd hadoop
配置ssh:
服务端:
su hadoop
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys
客户端
chmod 700 /home/hadoop
chmod 755 /home/hadoop/.ssh
su hadoop
cd /home
mkdir .ssh
服务端:
chmod 644 /home/hadoop/.ssh/authorized_keys
scp authorized_keys datanode1:/home/hadoop/.ssh/
scp authorized_keys datanode2:/home/hadoop/.ssh/
ssh datanode1
ssh datanode2
如果ssh配置好了就会出现以下提示资讯
The authenticity of host [dbrg-2] can't be established.
Key fingerpr is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告诉你它不知道这台主机但是你不用担心这个问题你是第次登入这台主机键入“yes”这将把
这台主机“识别标记”加到“~/.ssh/know_hosts”档案中第 2次访问这台主机时候就不会再显示这条提示信
不过别忘了测试本机ssh dbrg-1
mkdir /home/hadoop/HadoopInstall
tar -zxvf hadoop-0.20.1.tar.gz -C /home/hadoop/HadoopInstall/
cd /home/hadoop/HadoopInstall/
ln -s hadoop-0.20.1 hadoop
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:/usr/local/java/lib
export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop
export HADOOP_CONF_DIR=/home/hadoop/hadoop-conf
export PATH=$HADOOP_HOME/bin:$PATH
cd $HADOOP_HOME/conf/
mkdir /home/hadoop/hadoop-conf
cp hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml masters slaves /home/hadoop/hadoop-conf
vi $HADOOP_HOME/hadoop-conf/hadoop-env.sh
# The java implementation to use. Required. --修改成你自己jdk安装的目录
export JAVA_HOME=/usr/local/java
export HADOOP_CLASSPATH=.:/usr/local/java/lib
# The maximum amount of heap to use, in MB. Default is 1000.--根据你的记忆体大小调整
export HADOOP_HEAPSIZE=200
vi /home/hadoop/.bashrc
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:/usr/local/java/lib
export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop
export HADOOP_CONF_DIR=/home/hadoop/hadoop-conf
export PATH=$HADOOP_HOME/bin:$PATH
配置
namenode
#vi $HADOOP_CONF_DIR/slaves
192.168.13.108
192.168.13.110
#vi $HADOOP_CONF_DIR/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs:192.168.13.100:9000</value>
</property>
</configuration>
#vi $HADOOP_CONF_DIR/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>
#vi $HADOOP_CONF_DIR/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.13.100:11000</value>
</property>
</configuration>
~
在slave上的配置档案如下(hdfs-site.xml不需要配置):
[root@test12 conf]# cat core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs:namenode:9000</value>
</property>
</configuration>
[root@test12 conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>namenode:11000</value>
</property>
</configuration>
启动
export PATH=$HADOOP_HOME/bin:$PATH
hadoop namenode -format
start-all.sh
停止s-all.sh
在hdfs上建立danchentest资料夹,上传档案到此目录下
$HADOOP_HOME/bin/hadoop fs -mkdir danchentest
$HADOOP_HOME/bin/hadoop fs -put $HADOOP_HOME/README.txt danchentest
cd $HADOOP_HOME
hadoop jar hadoop-0.20.1-examples.jar wordcount /user/hadoop/danchentest/README.txt output1
09/12/21 18:31:44 INFO input.FileInputFormat: Total input paths to process : 1
09/12/21 18:31:45 INFO mapred.JobClient: Running job: job_200912211824_0002
09/12/21 18:31:46 INFO mapred.JobClient: map 0% reduce 0%
09/12/21 18:31:53 INFO mapred.JobClient: map 100% reduce 0%
09/12/21 18:32:05 INFO mapred.JobClient: map 100% reduce 100%
09/12/21 18:32:07 INFO mapred.JobClient: Job plete: job_200912211824_0002
09/12/21 18:32:07 INFO mapred.JobClient: Counters: 17
09/12/21 18:32:07 INFO mapred.JobClient: Job Counters
09/12/21 18:32:07 INFO mapred.JobClient: Launched reduce tasks=1
检视输出结果档案,这个档案在hdfs上
[root@test11 hadoop]# hadoop fs -ls output1
Found 2 items
drwxr-xr-x - root supergroup 0 2009-09-30 16:01 /user/root/output1/_logs
-rw-r--r-- 3 root supergroup 1306 2009-09-30 16:01 /user/root/output1/part-r-00000
[root@test11 hadoop]# hadoop fs -cat output1/part-r-00000
(BIS), 1
(ECCN) 1
检视hdfs执行状态,可以通过web介面来访问:192.168.13.100:50070/dfshealth.jsp检视map-reduce资讯,
可以通过web介面来访问:192.168.13.100:50030/jobtracker.jsp下面是直接命令列看到的结果。
出现08/01/25 16:31:40 INFO ipc.Client: Retrying connect to server: foo.bar./1.1.1.1:53567. Already tried 1 time(s).
的原因是没有格式化:hadoop namenode -format
如何在windows下安装hadoop建议你在windows上安装linux的虚拟机器,然后在linux上安装hadoop
1、安装Cygwin
下载cygwin的setup.exe,双击执行:
选择从Inter安装:
设定安装目录:
设定安装包目录:
设定“Inter Connection”的方式,选择“Direct Connection”:
选择一个下载站点:
“下一步”之后,可能会d出下图的“Setup Alert”对话方块,直接“确定”即可
在“Select Packages”对话方块中,必须保证“Net Category”下的“OpenSSL”被安装:
如果还打算在eclipse 上编译Hadoop,则还必须安装“Base Category”下的“sed”:
“Devel Category”下的subversion 建议安装:
下载并安装:
当下载完后,会自动进入到“setup”的对话方块:
在上图所示的对话方块中,选中“Create icon on Desk”,以方便直接从桌面上启动
Cygwin,然后点选“完成”按钮。至此,Cgywin 已经安装完成。
2、配置环境变数
需要配置的环境变数包括PATH 和JAVA_HOME:将JDK 的bin 目录、Cygwin 的bin 目录
以及Cygwin 的usr\bin( *** in)目录都新增到PATH 环境变数中;JAVA_HOME 指向JRE 安装目录。
3、windows系统上执行hadoop丛集,伪分散式模式安装步骤:
①启动cygwin,解压hadoop安装包。通过cygdrive(位于Cygwin根目录中)可以直接对映到windows下的各个逻辑磁碟分割槽。例如hadoop安装包放在分割槽D:\下,则解压的命令为$ tar -zxvf /cygdrive/d/hadoop-0.20.2.tar.gz,解压后可使用ls命令检视,如下图:
预设的解压目录为使用者根目录,即D:\cygwin\home\lsq(使用者帐户)。
②编辑conf/hadoop-env.sh档案,将JAVA_HOME变数设定为java的安装目录。例如java安装在目录C:\Program Files\java\jdk1.6.0_13,如果路径没空格,直接配置即可。存在空格,需将Program Files缩写成Progra_1,如下图:
③依次编辑conf目录下的core-site.xml、mapred-site.xml和hdfs-site.xml档案,如下图:
④安装配置SSH
点选桌面上的Cygwin图示,启动Cygwin,执行ssh-host-config命令,然后按下图上的选择输入:
当提示Do you want to use a different name?输入yes,这步是配置安装的sshd服务,以哪个使用者登入,预设是cyg_server这个使用者,这里就不事先新建cyg_server这个使用者,用当前本机的超管本地使用者:chenx,后续根据提示,2次输入这个账户的密码
出现Host configuration finished. Have fun! 一般安装顺利完成。如下图:
输入命令$ start sshd,启动SSH,如下图:
注:sshd服务安装完之后,不会预设启动,如果启动报登入失败,不能启动,可在服务属性-Log On视窗手工修改,在前述的过程之中,cygwin不会校验密码是否正确,应该只是校验了2次的输入是否一致,然后再手工启动。不知道为什么,sshd服务如果选择local system的登入方式,后续会有问题,所以sshd服务最好设定成当前的登入使用者。
⑤配置ssh登入
执行ssh-keygen命令生成金钥档案
输入如下命令:
cd ~/.ssh
ls -l
cat id_rsa.pub >>authorized_keys
完成上述 *** 作后,执行exit命令先退出Cygwin视窗,如果不执行这一步 *** 作,下面的 *** 作可能会遇到错误。接下来,重新执行Cygwin,执行ssh localhost命令,在第一次执行ssh localhost时,会有“are you sure you want to continue connection<yes/no>?”提示,输入yes,然后回车即可。当出现下图提示,即顺利完成该步:
⑥hadoop执行
格式化namenode
开启cygwin视窗,输入如下命令:
cd hadoop-0.20.2
mkdir logs
bin/hadoop namenode –format
启动Hadoop
在Cygwin 中,进入hadoop 的bin 目录,
执行./start-all.sh 启动hadoop;
可以执行./hadoop fs -ls /命令,检视hadoop 的根目录;
可以执行jps 检视相关程序;
如下图:(如果显示和下图类似,一般hadoop安装/启动成功)
如何在hadoop 环境下安装hive不行。 安装 vm 下载:去官网下 VMware-player-5.0.1-894247.zip 安装和配置ubanto 下载:去官网下 ubuntu-12.10-desk-i386.iso 开启vm,载入ubanto iso档案,进行安装更新 进入ubanto,如果是第一个进入,则需要设定root的密码
如何在ubantu环境下安装hadoop上apache的hadoop页下编译好的包,解压,配一些档案就行了 很容易 网上教程很多
如何在 Linux 下安装 PyCharmPyCharm 是由 Jetbrains 公司开发的一个跨平台编辑器。如果你之前是在 Windows 环境下进行开发,那么你会立刻认出 Jetbrains 公司,它就是那个开发了 Resharper 的公司。 这篇文章将讨论如何在 Linux 系统上获取、安装和执行 PyCharm 。
如何在linux下安装opencv新建一个perl,名为bar.pl
内容如下:
#!/usr/bin/perl
while (<>){
chomp
s/([^-]+) - .*/\1/g
system "apt-get install ".$_
}
然后apt-cache search opencv | perl bar.pl
相关函数pipe,popen,open,umask
表头文件
#include
#include
定义函数
int mkfifo(const char * pathname,mode_t mode)
函数说明
mkfifo()会依参数pathname建立特殊的FIFO文件,该文件必须不存在,而参数mode为该文件的权限(mode%~umask),因此 umask值也会影响到FIFO文件的权限。Mkfifo()建立的FIFO文件其他进程都可以用读写一般文件的方式存取。当使用open()来打开 FIFO文件时,O_NONBLOCK旗标会有影响
1、当使用O_NONBLOCK 旗标时,打开FIFO 文件来读取的 *** 作会立刻返回,但是若还没有其他进程打开FIFO 文件来读取,则写入的 *** 作会返回ENXIO 错误代码。
2、没有使用O_NONBLOCK 旗标时,打开FIFO 来读取的 *** 作会等到其他进程打开FIFO文件来写入才正常返回。同样地,打开FIFO文件来写入的 *** 作会等到其他进程打开FIFO 文件来读取后才正常返回。
返回值
若成功则返回0,否则返回-1,错误原因存于errno中。
错误代码
EACCESS 参数pathname所指定的目录路径无可执行的权限
EEXIST 参数pathname所指定的文件已存在。
ENAMETOOLONG 参数pathname的路径名称太长。
ENOENT 参数pathname包含的目录不存在
ENOSPC 文件系统的剩余空间不足
ENOTDIR 参数pathname路径中的目录存在但却非真正的目录。
EROFS 参数pathname指定的文件存在于只读文件系统内。
示例1:
#include
#include
#include
#include
int main(void)
{
char buf[80]
int fd
unlink( "zieckey_fifo" )
mkfifo( "zieckey_fifo", 0777 )
if ( fork() >0 )
{
char s[] = "Hello!\n"
fd = open( "zieckey_fifo", O_WRONLY )
write( fd, s, sizeof(s) )
//close( fd )
}
else
{
fd = open( "zieckey_fifo", O_RDONLY )
read( fd, buf, sizeof(buf) )
printf("The message from the pipe is:%s\n", buf )
//close( fd )
}
return 0
}
执行
hello!
示例2:
#include
#include
#include
#include
#include
int main( int argc, char **argv )
{
mode_t mode = 0666
if ( argc !=2 )
{
printf( "Usage:[%s] fifo_filename\n", argv[0] )
return -1
}
if (mkfifo( argv[1], mode)<0 )
{
perror( "mkfifo")
return -1
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)